C++ getline() 函数没有按预期工作

标签 c++

int boardDim(ifstream & inputFile, unsigned int x, unsigned int y) {
    inputFile.open("test.txt");
    if (!(inputFile.is_open())) {
        throw fileNotOpen;
    }
    else {
        stringstream output;
        string output1;
        if (getline(inputFile, output1)) {
            output << output1;
            if (output >> x) {
                if (output >> y) {
                    return success;
                }
                return secBoardVarErr;
            }
            return firstBoardVarErr;
        }
        return lineErr;
    }
    cout << x << endl;
    cout << y << endl;
}

输入文件包含一行两个 int,“10 11”。

我正在返回 lineErr。我似乎无法弄清楚为什么我的 getline() 函数返回 false。

最佳答案

写入output 流后,您就到了流的末尾。为了能够再次读取数据,您需要查找到流的开头:

output.seekg(0, ios_base::beg);

顺便说一句,output 对于您正在读取的流来说是一个非常糟糕的名称。 :-)

关于C++ getline() 函数没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42426585/

相关文章:

c++ - 数据类型 - 排序和代码大小

c++ - 防止在不同类型的 std::function 中包装 lambda

c++ - 将取消引用的智能指针的地址传递给需要原始指针的函数

c++ - 将自己的类的实例传递给另一个

c++ - join() 是否释放了分配的内存? - C++11 线程

c++ - 返回原始指针而不是 unique_ptr 是好的编码习惯吗?

c++ - 我以后可以更改 C++ 中映射的排序标准吗?

c++ - 嵌入式 Python 段错误

c++ - 有偏随机数发生器

c++ - SQLite C++ 'database is locked' 当多个进程以只读模式访问数据库时