バイナリファイルに文字列を書き込むコードは次のとおりです。
std::string s("Hello");
unsigned int N(s.size());
fwrite(&N,sizeof(N), 1 ,bfile);
fwrite(s.c_str(),1, N ,bfile);
fflush(bfile);
文字列を読み取る部分:
std::string new_s("");
unsigned int N(0);
fread(&N,sizeof(N),1,bfile);
char* c(new char[N+1]);
fread(c,1,N,bfile);
c[N] = '\0';
new_s = c;
delete[] c;
質問:
- それを行うためのより簡単な方法はありますか?
- ファイルを読み書きするとき、?
'\0'
から来るヌル文字を考慮に入れる必要がありますc_str()
か?
私はに関連する副次的な質問がありますchar* c(new char[N])
:
- 私はc++が例えばintで静的配列を作成することを許可しないことを知っているので、解決策はで作成され削除され
a[size_of_array]
たポインタを使用することです。これが唯一の解決策であり(私が使用できない場合)、この解決策は効率的でしょうか?new[]
delete[]
std::vector < int >