检查此程序
ifstream filein("Hey.txt");
filein.getline(line,99);
cout<<line<<endl;
filein.getline(line,99);
cout<<line<<endl;
filein.close();
Hey.txt文件中有很多字符。超过1000
但我的问题是 为什么我第二次尝试打印线。它没有打印?
答案 0 :(得分:34)
因此,从流中读取行的惯用方法是:
{
std::ifstream filein("Hey.txt");
for (std::string line; std::getline(filein, line); )
{
std::cout << line << std::endl;
}
}
注意:
否close()
。当用于惯用语时,C ++会为您处理资源管理。
使用免费std::getline
,而不是流成员函数。
答案 1 :(得分:10)
根据C ++参考(here),getline在提取count-1个字符时设置ios::fail
。您必须在filein.clear();
来电之间拨打getline()
。
答案 2 :(得分:1)
#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;
}
答案 3 :(得分:0)
正如Kerrek SB所说的那样有两种可能性:
1)第二行是空行
2)没有第二行,超过1000个字符在一行中,所以第二行getline
没有任何东西可以得到。