这是我的代码:
#include <iostream>
#include <stdlib.h>
#include <fstream>
using namespace std;
int main() {
string line;
ifstream inputFile;
inputFile.open("input.txt");
do {
getline(inputFile, line);
cout << line << endl;
} while (line != "0");
return 0;
}
input.text内容:5 9 2 9 3
8 2 8 2 1
0
在Eclipse中,它进入无限循环。我正在使用MinGW 5.1.6 + Eclipse CDT。我尝试了很多事情,但找不到问题。
最佳答案
由于您在Windows上,请尝试:
} while (line != "0\r");
最后一行存储为
"0\r\n"
。 \n
被getline用作行定界符,因此实际读取的行将为"0\r"
要么
您可以使用以下命令将dos格式文件转换为UNIX格式
dos2unix input.txt
现在您的原始程序应该可以工作了。该命令会将行尾的
\r\n
更改为\n
另外,尝试打开文件后,您应始终执行错误检查,例如:
inputFile.open("input.txt");
if(! inputFile.is_open()) {
cerr<< "Error opening file";
exit(1);
}
关于c++ - getline()在Eclipse中返回空行,但在Dev C++中可以正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2543057/