如何在c++;每行不读两遍 我用C++读取了一个问题文件,它的每一行包含一个浮点数,如下: 1.33 5.45 6.21 2.48 3.84 7.96 8.14 4.36 2.24 9.45

如何在c++;每行不读两遍 我用C++读取了一个问题文件,它的每一行包含一个浮点数,如下: 1.33 5.45 6.21 2.48 3.84 7.96 8.14 4.36 2.24 9.45,c++,C++,我的代码正在读取和打印everyline并打印两次。我如何修复它 string line; fstream inputNumbersFile("input.txt"); if (inputNumbersFile.is_open()) { while (!inputNumbersFile.eof()) { getline(inputNumbersFile, line); cout

我的代码正在读取和打印everyline并打印两次。我如何修复它

    string line;
    fstream inputNumbersFile("input.txt");

    if (inputNumbersFile.is_open())
    {   
        while (!inputNumbersFile.eof())
        {
            getline(inputNumbersFile, line);
            cout << line << endl;
        }
    }
字符串行;
fstream inputNumbersFile(“input.txt”);
if(inputNumbersFile.is_open())
{   
而(!inputNumbersFile.eof())
{
getline(InputNumberFile,第行);

cout在循环条件下使用
inputNumbersFile.eof()
是一个坏主意。只需将此循环替换为

while (getline(inputNumbersFile, line))
    cout << line << endl;
while(getline(inputNumbersFile,line))

cout在循环条件下使用
inputNumbersFile.eof()
是一个坏主意。只需将此循环替换为

while (getline(inputNumbersFile, line))
    cout << line << endl;
while(getline(inputNumbersFile,line))

旁白:你有没有用调试器检查过你的代码,看看它在做什么?这是你应该从这样的问题开始的。这可能会对你的问题有所帮助。我刚刚用你的输入数据在Linux上用GCC 4.6.3构建了它,它对我来说很好。是的,我用调试器检查过我的代码。它会执行geline语句在while循环中出现了两次。你是说最后一行空行被打印出来了吗?这对我来说很有效,尤其是在答案中的修复。旁白:你用调试器检查过你的代码了吗?这是你应该从这样的问题开始的。这可能会对你的问题有所帮助。我刚刚构建了这个在Linux上使用GCC 4.6.3,使用您的输入数据,它对我来说很好。是的,我用调试器检查了我的代码。它在while循环中执行了两次geline语句。您的意思是最后一行空行被打印出来了吗?它对我来说很好,尤其是在答案中的修复情况下。