【发布时间】:2020-07-05 07:48:29
【问题描述】:
我正在使用ofstream 将数据保存到一个文件,并尝试使用ifstream 从中提取数据。
只有保存过程有效,但当我尝试提取时,它开始给我垃圾数据。
我想用ofstream这样保存
ofstream & operator<<(ofstream &ofs, Item &i){
ofs<<"Item name "<<i.name<<endl;
ofs<<"Item price "<<i.price<<endl;
ofs<<"Item quantity "<<i.qty<<endl;
return ofs;
}
在main方法中
ofstream ofs("Items.txt",ios::trunc)
vector<Item *>::iterator itr;
for(itr=list.begin(); itr!=list.end(); itr++){
ofs<<**itr;
}
当我检查 Items.txt 时,它工作得非常好。
使用ifstream提取失败
ifstream & operator>>(ifstream &ifs, Item &i){
ifs>>i.name>>i.price>>i.qty;
return ifs;
}
我尝试这样做ifs>>"Item name ">>i.name>>endl;
但这给了我编译器错误。
在主方法中
Item item;
ifstream ifs("Items.txt");
ifs>>item;
for(int i=0; i<n; i++){
cout<<item<<endl;
}
如果你想知道cout<<item<<endl;,我只是创建
ostream & operator<<(ostream &os, Item &i){
os<<"Item name "<<i.name<<endl;
os<<"Item price "<<i.price<<endl;
os<<"Item quantity "<<i.qty<<endl;
return os;
}
我不知道如何使用 ifstream 来精确自定义数据。
谁能帮忙,谢谢?
【问题讨论】:
-
It fails to extract using ifstream:这是编译错误还是运行时错误? -
编译错误。
exec.cpp:38:5: error: invalid operands to binary expression ('std::__1::ifstream' (aka 'basic_ifstream<char>') and 'const char [15]') ifs>>"Item qunatity ">>i.qty>>endl; ~~~^ ~~~~~~~~~~~~~~~~