我想将字符串保存到二进制文件中,这是正确的吗?
std::ofstream outfile(filename, std::ios_base::binary);
string str="some text";
for (const char &i : str) {
outfile.write((const char *) &i, sizeof(char));
}
或:
outfile.write((const char *) &str, str.length()*sizeof(char));
注意:我不想在字符串末尾保存null终止符
IMHO,正确的方法是先写字符串的长度,然后写字符串的内容:
const std::string example_text = "Redwood trees are very tall.";
const unsigned int length = example_text.length();
outfile.write((char *) &length, sizeof(length));
outfile.write(example_text.data(), length);
这允许使用块读取:
unsigned int length;
outfile.read((char *) &length, sizeof(length));
std::string text;
text.reserve(length);
outfile.read(text.data(), length);