Worldsin
活成一座城市
2021-01-25 11:30

关于C++ getline函数读取文件时遭遇的问题

  • c++

问一下关于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了

各位大神求帮助啊啊啊啊啊!!

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答