ファイルから文字を繰り返し読み込むC++のcharバッファがあります。各行を読み終えたら、バッファを文字列に変換して、他の処理と保存を行います。charバッファをstringに変換するのにstrdupが必要です
int main() {
char buf[1024];
FILE *f;
while(1) {
fgets(buf, MAXBUF, f); //read a line from a file
string s1(buf);
string *s2 = new string(buf);
}
}
バッファを文字列に変換するときに、自動的にコピーが作成されるか、明示的にコピーを作成する必要がありますか? std ::文字列に割り当てるときに
string s1(strdup(buf));
string *s2 = new string(strdup(buf));
コピーは自動的に行われますが、 'std :: getline'を使って文字列を直接読み込むだけです。そして 'new'を使わないでください。 'FILE * 'は使わないでください。 – Ryan
テストコードにもメモリが漏れていることをご存じでしょうか。 –
サンプルコードに無限ループがあります。 – thebat