1

ユーザーが入力したサイズの動的文字列を作成する必要があるこの位置に直面しています(動的cstringを使用してみました)。

char * S;
int x;

cin >> x;

S = new char[x];

for (int i = 0; i < x; i++) {
    S[i]=' ';        //trying to make it a string of spaces so I can fill it in later
}

これを実行して文字列を出力すると、(cout << S;)x スペースといくつかのランダムな文字が表示されます。これを解決するにはどうすればよいですか?

4

1 に答える 1

1

以前のコメントアウトを拡張します。std::cout最後にヌル文字を追加して、いつ停止するかを知る必要があると思います。そうしないと、Sポイントするメモリの内容を印刷しようとし続けます。

char * S;
int x;
cin >> x;
S = new char [x + 1]; // +1 for the null character

int i;
for (i=0; i<(x); i++)
  S[i] = ' ';

S[i] = '\0';
于 2013-06-05T19:29:38.630 に答える