这是我的代码:

#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/

10-10 21:29