检查这个程序
ifstream filein("Hey.txt");
filein.getline(line,99);
cout<<line<<endl;
filein.getline(line,99);
cout<<line<<endl;
filein.close();
文件 Hey.txt 中有很多字符。远超1000
但我的问题是为什么我第二次尝试打印行。它没有得到打印?
从流中读取行的惯用方法是:
std::ifstream filein("Hey.txt");
for (std::string line; std::getline(filein, line); )
{
std::cout << line << std::endl;
}
笔记:
没有close()
。C++ 在习惯使用时会为您处理资源管理。
使用 free std::getline
,而不是流成员函数。
根据 C++ 参考(此处),getline 设置ios::fail
提取 count-1 个字符的时间。您必须在通话filein.clear();
之间getline()
打来电话。
#include<iostream>
using namespace std;
int main()
{
ifstream in;
string lastLine1;
string lastLine2;
in.open("input.txt");
while(in.good()){
getline(in,lastLine1);
getline(in,lastLine2);
}
in.close();
if(lastLine2=="")
cout<<lastLine1<<endl;
else
cout<<lastLine2<<endl;
return 0;
}
正如Kerrek SB 正确所说,有两种可能性:1)第二行是空行2)没有第二行并且所有超过1000 个字符都在一行中,所以第二行getline
没有什么可获取的。