【发布时间】:2018-10-07 12:57:50
【问题描述】:
早上好,我正在编写用于读写二进制文件的 C++ 代码。我尝试了一个简单的案例如下:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void writeb(string text1)
{
ofstream outfile("binary.txt", ios::binary);
if (outfile.is_open())
{
int strlen1=text1.length();
outfile.write((char*) &strlen1, sizeof(int));
outfile.write((char*) &text1, strlen1 );
outfile.close();
}
ifstream infile("binary.txt", ios::binary);
string text2;
if (infile.is_open())
{
int strlen2=0;
infile.read((char*) &strlen2, sizeof(int));
cout << "check " << strlen2 <<" ";
text2.resize(strlen2);
infile.read((char*)(&text2), strlen2);
cout << text2 << endl;
infile.close();
}
}
void readb()
{
ifstream infile("binary.txt", ios::binary);
string text3;
if (infile.is_open())
{
int strlen3=0;
infile.read((char*) &strlen3, sizeof(int));
cout << "read " << strlen3 <<" ";
infile.read((char*)(&text3), strlen3);
cout << text3 << endl;
infile.close();
}
}
int main()
{
string text = "Hello! How are you?";
writeb(text);
readb();
}
这里有两个功能:一个是写入二进制文件并检查写入的内容,另一个是读取二进制文件。
很遗憾,阅读器功能无法按预期工作。
事实上我得到以下输出:
check 19 Hello! How are you?
read 19 ©zs Ïs ow are you?
尤其是 reader 函数似乎无法正确读取二进制文件,而 writer 函数中的 check reader 工作正常。我无法理解错误在哪里。 有人可以帮我解决这个问题吗?或者有人可以向我建议其他解决方案来在分离的函数中写入和读取二进制文件吗? 非常感谢你 最好的祝福 DS
【问题讨论】:
标签: binary