小弟我想问string的有关问题,本人C++初学者
我想问string的问题,本人C++菜鸟int _tmain(int argc, _TCHAR* argv[]){using namespace stdifstream fin
我想问string的问题,本人C++菜鸟
int _tmain(int argc, _TCHAR* argv[])
{
using namespace std;
ifstream fin;
fin.open("D:\\sudy\\tobuy.txt");
if(fin.is_open()==false)
{
cerr << "Can't open file.Bye\n";
exit(EXIT_FAILURE);
}
string item;
int count=0;
getline(fin,item,':');
while(fin)
{
++count;
cout << count << ": " << item <<endl;
getline(fin,item,':');
}
cout << "Done\n";
fin.close();
cin.get();
cin.get();
return 0;
}
上面的代码我看C++Primer plus上的,就是把文件中的内容读取到string字符串中并打印,他首先
getline(fin,item,':');然后再while循环中又getline(fin,item,':');难道不是从文件中又从头读取了吗?为什么结果不是从头读取,难道保存上次读取的位置了吗?
还有while(fin)怎么回事?fin不是对象吗?又不是函数,怎么会有返回值?
本人刚学,请解答!万分感谢!!
[解决办法]1不会, 你文件打开了没有关闭,也没有额外fseek来移动,
就还是在上次读文件时候的位置上开始读后面的数据!
2 判断fin是否有效 非零为真 执行(不推荐这样写)
[解决办法]1.getline() 为每次读取一行,读完之后文件指针就会停留在当前位置,下一次再读的时候,会接着当前位置往下读。
2.while(fin)的写法不正确。可以写成while(!fin.eof());