首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

ifstream& operator>> 函数失败,该怎么处理

2012-06-24 
ifstream& operator 函数失败friend ifstream& operator(ifstream& i, CSample& obj){iobj.idiob

ifstream& operator>> 函数失败

friend ifstream& operator>>(ifstream& i, CSample& obj)
{
i>>obj.id;
i>>obj.price;
i>>obj.counts;
return i;
}





void InitList()
{
ifstream ifs;
ifs.open(fileName,ifstream::in);
CSample obj;

string str;


while(getline(ifs,str))
{

ifs>>obj;
mylist.push_back(obj);
}

ifs.close();
}




发现 ifs>>obj;后,obj没有存储数据,  

是失败的



[解决办法]
在按照楼主的CSample改一下:

C/C++ code
#include <iostream>#include <fstream>using namespace std;class CSample{private:    int        id;    double    price;    int        counts;public:    inline CSample():id(-1), price(0.0), counts(0)    {    }     inline CSample(int id, double price, int counts)    {        this->id = id;        this->price = price;        this->counts = counts;    }     inline virtual ~CSample()    {    }    inline void print()    {        cout << id << " " << price << " " << counts << endl;    }    friend ofstream& operator << (ofstream&, const CSample&);    friend ifstream& operator >> (ifstream&, CSample&); }; ofstream& operator << (ofstream& os, const CSample& c){    os << c.id << " " << c.price << " " << c.counts << endl;    return os;}ifstream& operator >> (ifstream& is, CSample& c){    is >> c.id >> c.price >> c.counts;    return is;}int main(void){    CSample a(1, 1.1, 1);    CSample b(2, 2.2, 2);    CSample c;    CSample d;        // 往文件写入数据    ofstream fos("E:/out.dat");    if(!fos)    {        cout << "can not open file..." << endl;        exit(1);    }    fos << a << b;    fos.close();    // 从文件读出数据    ifstream fis("E:/out.dat");    if(!fis)    {        cout << "can not open file..." << endl;        exit(1);    }     fis >> c >> d;    fis.close();    // 显示读出数据    c.print();    d.print();     return 0;} 

热点排行