C++で動的配列を扱っています。次のコードを参考にしてください。char * [C++]
私は文字を1つずつ読み込み、C文字列を作成しようとしています。配列のサイズが十分でない場合、私はそれを増やします。しかし、関数increaseArrayはエラーとともに動作し、他の文字列を返します。私は間違っている?機能increaseArray
で
void increaseArray(char* str, int &size){
char* newStr = new char[size * 2];
for (int i = 0; i < size; i++){
newStr[i] = str[i];
}
size *= 2;
delete[] str;
str = newStr;
}
char* getline()
{
int size = 8;
char* str = new char[size];
char c;
int index = 0;
while (c = getchar()) {
if (index == size) increaseArray(str, size);
if (c == '\n') {
str[index] = '\0';
break;
};
str[index] = c;
index++;
}
return str;
}
この "str = newStr;"ローカル変数strをnewStrに設定します。そのローカル変数は直ちに破棄されます。ポインタへのポインタまたは参照が必要です。 –
'std :: string'や' std :: vector 'を使ってみませんか? –
Walter
_ "文字を1つずつ読み込んでC文字列を作成しようとしていますが、配列サイズが足りない場合は、文字列を増やしています" _文字通り 'std :: string'が対象です。なぜあなたはそれを使用し、自分自身の問題を保存しないでください?あなたのコードは私のチームのレビューに合格しません。 –