【发布时间】:2014-08-30 22:15:33
【问题描述】:
我正在尝试从文件中读取字符串,但不知道为什么会出现垃圾。这是我的代码:
class book
{
char *bname;
public:
void addBook()
{
char newName[30];
cout << "Enter the new bookname: ";
cin.getline(newName,30);
ofstream add("book.txt",ios::binary | ios::app);
if(add.write((char*)this,sizeof(this)))
cout << "Entry Succesful";
else
cout << "Entry failed";
}
void showBook()
{
ifstream getBook("book.txt",ios::binary);
getBook.seekg(0);
while(getBook.read((char*)this,sizeof(this)))
{
cout << bname;
}
}
};
void main()
{
book b;
b.addBook();
b.showBook();
getch();
}
截图如下:
【问题讨论】:
-
您的输入是什么,您的代码会生成什么结果,您期望什么结果?只是扔掉代码并说它对其他东西不起作用不会让你走得太远。帮助我们帮助您。
-
为什么要以二进制模式打开?在输入模式下打开它。
-
ifstream 已经是输入模式。我用二进制打开它,因为“写入”的数据就是这种格式。
-
bname 从未设置为任何值。
-
您的类包含一个从未初始化的原始指针,即使您将类转储到文件中也不会保存
bname指向的内容。这个问题被标记为 C++,所以我建议你使用std::string和真正的序列化而不是你现在拥有的代码。