如何解决如何从 C++ 中的二进制文件中读取字符串?
我有一个函数,两个函数,在 C++ 中写入和读取二进制文件。
void save_ascII(string ascII_text,string filename)
{
ofstream fout;
fout.open(filename,ofstream::binary);
size_t input_size = ascII_text.size();
if (fout.is_open())
{
fout.write(reinterpret_cast<char*>(&input_size),sizeof(input_size));
fout.write(reinterpret_cast<char*>(&input_size),input_size);
fout.close();
}
}
void read_ascII(string filename)
{
string read_input;
ifstream fin(filename,fstream::binary);
size_t read_size;
if (fin.is_open())
{
fin.read(reinterpret_cast<char*>(&read_size),sizeof(read_size));
read_input.resize(read_size);
fin.read(&read_input[0],read_size);
fin.close();
}
}
问题在于,当它从二进制文件中读取时,它只是内存中的虚拟数据。
When it reads from the binary file,it shows:
►╠╠╠╠╠╠╠╠▄²A
任何建议都非常感谢。
解决方法
在您的代码中,
size_t input_size = ascII_text.size();
if (fout.is_open())
{
fout.write(reinterpret_cast<char*>(&input_size),sizeof(input_size));
fout.write(reinterpret_cast<char*>(&input_size),input_size); //<--bug
fout.close();
}
而不是标有 bug<--
的行,您需要
fout.write(ascII_text.data(),input_size);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。