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