我一直很难写入二进制文件并回读。我基本上是在写这种格式的记录
1234|ABCD|efgh|IJKL|ABC
在写入此记录之前,我将写入整个记录的长度(using string.size())
然后我将记录写入二进制文件ofstream
,如下所示:
整数大小;
ofstream studentfile;
studentfile.open( filename.c_str(),ios::out|ios::binary );
studentfile.write((char*)&size,sizeof(int));
studentfile.write(data.c_str(),(data.size()*(sizeof(char))));
cout << "Added " << data << " to " << filename << endl;
studentfile.close();
我在其他地方读到了这些数据
ifstream ifile11;
int x;
std::string y;
ifile11.open("student.db", ios::in |ios::binary);
ifile11.read((char*)&x,sizeof(int));
ifile11.read((char*)&y,x);
cout << "X " << x << " Y " << y << endl;
首先我将记录的长度读入变量 x,然后将记录读入字符串 y。问题是,输出显示 x 为 '0' 而 'y' 为空。
我无法弄清楚这一点。非常感谢能够研究这个问题并提供一些见解的人。
谢谢