【发布时间】:2018-03-22 06:46:53
【问题描述】:
#include <bits/stdc++.h>
using namespace std;
class student
{
string name;
string reg;
public:
void getdata()
{
getline(cin,name);
getline(cin,reg);
}
void printdata()
{
cout<<name<<"\t"<<reg<<endl;
}
};
int main()
{
ifstream fin;
ofstream fout;
student obj;
fout.open("google.txt",ios::out|ios::binary);
obj.getdata();
fout.write((char*)&obj,sizeof(obj));
fout.close();
student obj2;
fin.open("google.txt",ios::in|ios::binary);
fin.read((char*)&obj2,sizeof(obj2));
obj2.printdata();
fin.close();
return 0;
}
我正在尝试对象文件处理的基本读写操作。
但执行上述代码后,我可以成功读写,但收到错误消息*** Error in ./io: free(): invalid size: 0x00007ffea93f64b0 ***Aborted (core dumped)
输入:
火刃
, 17HFi394
输出:
火刃 , 17HFi394
和一条错误消息:*** Error in ./io: free(): invalid size: 0x00007ffea93f64b0 ***Aborted (core dumped)
谁能解释这个错误以及我应该怎么做才能克服这个问题。
【问题讨论】:
-
您不喜欢将字符串写入二进制文件的说法。考虑一个文本文件以获得成功,“google.txt”是一个很好的提示,这正是您真正想要的。
-
无关:小心
#include <bits/stdc++.h>。它是 g++ 编译器的内部实现头文件,不打算供用户代码使用。它还包括几乎整个 C++ 标准库。那是很多你可能没有使用的东西。将它与using namespace std结合起来,您已经将数千个标识符放入全局命名空间中,它很容易与您的代码发生冲突。大多数时候你可能会很好,但如果你很幸运,你会得到奇怪的编译器错误,如果你不幸运,就会出现奇怪的程序行为。 -
@user4581301 谢谢。我会记住这一点
标签: c++ file-handling