2016-11-10 14 views
0

の配列を印刷しようとするので、私はそうであっても同じようパディングとうまく表を印刷しようとしている:「テーブル」doesntのフォーマットがうまくC++

int rowLength = 8 * 4 + 8 + 1; 
char arr[rowLength]; 

fill(arr, arr + rowLength, '-'); 
string divider = arr; 

for(int y = 0; y < 5; y++) { 
    cout << "\n" << divider << "\n"; 
    for(int x = 0; x < 8; x++) { 
     cout << "| " << "1"; 
     if(x == 7) 
      cout << "|"; 
    } 
} 
cout << "\n" << divider; 

そして、私は均等に印刷するには、テーブルを期待してい以下のように、しかし、それが印刷されます。それは均等に印刷し、最後に2時間なして

Image 1

誰もが、私は印刷コードを修正することができます方法を知っていますか?

ありがとうございます!

+0

編集:除算コードを追加 – madcrazydrumma

答えて

5
string divider = arr; 

このstd::stringchar *に減衰しますcharアレイである、arrから構成されます。 char *から構築する場合、char *はヌルで終了する文字列でなければなりません。

コードでは、char配列全体が文字で埋められますが、追加の'\0'バイトが追加されません。この結果、未定義の動作が発生します。

関連する問題