首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何读取最后一行文件?

如何读取最后一行文件?
EN

Stack Overflow用户
提问于 2014-11-19 05:46:57
回答 2查看 6.9K关注 0票数 1

我在看完文件后试了一下。它没有显示文件的最后一行,它应该在完成读取后在new1字符串指针中显示。

代码语言:javascript
运行
复制
#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;
}

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-19 05:59:40

对代码的主要更改:

替换

代码语言:javascript
运行
复制
while (myfile)
{
     getline (myfile,line);
     cout << line<<endl;
     new1=line;

}

通过

代码语言:javascript
运行
复制
while (getline (myfile,line))
{
   cout << line<<endl;
   new1=line;
}              

第一个不能工作的原因是在您阅读完最后一行之后,while (myfile)继续计算到while(true)。在那个时候,getline(myfile, line)没有成功。您没有捕获返回值并正确处理它。

其他改进:

替换

代码语言:javascript
运行
复制
std::string *new1;
new1 = new string;

通过

代码语言:javascript
运行
复制
std::string new1;

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

代码语言:javascript
运行
复制
while (getline (myfile,line))
{
   cout << line<<endl;
   *new1=line;  // *new1, not new1.
}

当然,您也需要添加一行来删除new1

票数 1
EN

Stack Overflow用户

发布于 2014-11-19 06:03:42

这是因为在结束循环之前最后一个值是eof。

用这个:

代码语言:javascript
运行
复制
while (getline (myfile,line))
{
    cout << line<<endl;
    new1=line;

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27009847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档