问一下关于getline 的问题
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main()
{
fstream file("1.txt",ios::in);
string str;
int num;
while(getline(file,str))
{
file>>num;
cout<<num<<endl;
}
return 0;
}
文件 1.txt 里的内容是
99 99 99
18 18 18
33 33 33
最后输出的是
18
33
33
相当于第一行没有输出,最后一行输出两次,这是为什么?
然后我自己改了一下代码,变成
int main()
{
int num;
fstream file;
file.open("1.txt");
string str;
int i = 1;
while (i)
{
file >> num;
cout << num << endl;
getline(file, str);
if (file.eof())
i--;
}
return 0;
}
当我改成这样的时候就能正常输出
99
18
33了
各位大神求帮助啊啊啊啊啊!!
是这样吗?
第一次getline,file读完第一行,file指向第二行开头,所以num读取到第二行开头的18;
第二次file读完第二行,file指向第三行开头,所以num读取到第三行开头的13;
第二次file读完第三行,file指向第三行末尾,所以num读取到第三行末尾的13;