gpt4 book ai didi

c++ - getline() 在 Eclipse 中返回空行,但在 Dev C++ 中正常工作

转载 作者:行者123 更新时间:2023-11-30 01:31:52 28 4
gpt4 key购买 nike

这是我的代码:

#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.txt内容:

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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com