【问题标题】:Unrecognized getline无法识别的 getline
【发布时间】:2021-03-03 09:07:44
【问题描述】:

我正在上 udemy 的 C++ 中级课程。在关于阅读文本文件的课程中,导师编写了以下代码:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    string filename = "Text.txt";
    ifstream inFile;
    if (inFile.is_open()) {
        string line;
        while (!inFile) {
            getline(inFile, line);
            cout << line << '\n';
        }
        inFile.close();
    }

    else
        cout << "Unable to open file";

    return 0;
}

在导师的计算机上,程序运行正常,但在我的计算机上,我收到错误:错误 C3861:'getline':找不到标识符。 更糟糕的是,如果我尝试(正如我的 IDE -Visual Studio 2019- 建议的那样)用 std::basic_istream::getline 替换 getline,我会收到错误:'std::basic_istream':使用类模板需要模板参数列表。有谁知道会发生什么?

【问题讨论】:

  • std::getline 是标头&lt;string&gt; 的一部分,此处未包含。
  • 您需要包含&lt;string&gt; 才能使用getline。 “需要”实际上是“应该”,因为标题可能包含其他标题,但这不是你应该依赖的
  • 添加正确的包含将解决编译器错误,但您的程序将始终打印Unable to open file,因为您从不尝试打开文件。
  • 您需要获得一些参考资料,您可以在其中查找此类资料。没有人能记住标准库中每个函数所需的每个头文件,但每个人都应该知道如何获取这些信息。试试这个:en.cppreference.com/w/cpp/string/basic_string/getline

标签: c++ getline


【解决方案1】:

添加标题

#include<string>

因为 getline 是这个头文件的一部分 我会建议你总是参考命名空间 而不是

using namespace std;

使用

std::cout
std::getline 
etc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 2013-04-19
    • 2019-01-28
    • 2017-08-10
    • 2019-11-01
    相关资源
    最近更新 更多