我在阅读文件程序后尝试了这个程序。它没有显示文件的最后一行,完成读取后应该在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;
}
提前感谢。
答案 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;
}