我怎么能读到最后一行文件

时间:2014-11-19 05:46:58

标签: c++ file ifstream

我在阅读文件程序后尝试了这个程序。它没有显示文件的最后一行,完成读取后应该在new1字符串指针中。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main () {
std::string line;
int i;
std::string *new1;
new1 = new string;
ifstream myfile ("path.txt");
   while (myfile)
   {
         getline (myfile,line);
         cout << line<<endl;
         new1=line;

   }              
   cout<<new1<<endl;
   myfile.close();
      cin.get();
      return 0;
}

提前感谢。

2 个答案:

答案 0 :(得分:1)

代码的主要更改:

替换

while (myfile)
{
     getline (myfile,line);
     cout << line<<endl;
     new1=line;

}

通过

while (getline (myfile,line))
{
   cout << line<<endl;
   new1=line;
}              

第一个不起作用的原因是,在您阅读完最后一行后,while (myfile)继续评估为while(true)。那时,getline(myfile, line)没有成功。您没有抓住该返回值并正确处理它。

其他改进:

替换

std::string *new1;
new1 = new string;

通过

std::string new1;

不确定为什么您认为需要new1作为指针。如果您继续将new1作为指针,则必须将while循环更改为:

while (getline (myfile,line))
{
   cout << line<<endl;
   *new1=line;  // *new1, not new1.
}

当然,您还必须添加一行来删除new1

答案 1 :(得分:0)

这是因为在终止循环之前,最后一个值排在第一位。

使用它:

while (getline (myfile,line))
{
    cout << line<<endl;
    new1=line;

}