Check this program
ifstream filein("Hey.txt");
filein.getline(line,99);
cout<<line<<endl;
filein.getline(line,99);
cout<<line<<endl;
filein.close();
The file Hey.txt has alot of characters in it. Well over a 1000
But my question is
Why in the second time i try to print line. It doesnt get print?
According to the C++ reference (here) getline sets the ios::fail
when count-1 characters have been extracted. You would have to call filein.clear();
in between the getline()
calls.
The idiomatic way to read lines from a stream is thus:
{
std::ifstream filein("Hey.txt");
for (std::string line; std::getline(filein, line); )
{
std::cout << line << std::endl;
}
}
Note:
No close()
. C++ takes care of resource management for you when used idiomatically.
Use the free std::getline
, not the stream member function.
As Kerrek SB said correctly There is 2 possibilities:
1) Second line is an empty line
2) there is no second line and all more than 1000 character is in one line, so second getline
has nothing to get.