[英]std has no member 'getline'?
我正在尝试使用 std::getline,但是我的编译器告诉我 getline 没有被识别?
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <fstream>
#include <cstdlib>
int main(){
using namespace std;
string line;
ifstream ifile("test.in");
if(ifile.is_open()){
while(ifile.good()){
getline(ifile,line);
}
}
}
std::getline
在string
头中定义。
#include <string>
此外,您的代码没有使用cstring
、 cstdio
、 cmath
或cstdlib
; 为什么要包括这些?
编辑:为了澄清关于cstring
和string
标头的混淆, cstring
将C 运行时库的string.h
的内容拉入std
命名空间; string
是C++ 标准库的一部分,包含getline
、 std::basic_string<>
(及其特化std::string
和std::wstring
)等——两个非常不同的头文件。
正如 ildjarn 指出的那样,该函数是在<string>
声明的,我很惊讶您没有在以下位置收到错误:
string line;
还有这个:
while(ifile.good()){
getline(ifile,line);
}
不是写读循环的方法。 您必须测试读取操作的成功,而不是当前的流状态。 你要:
while( getline(ifile,line) ) {
}
发生这种情况是因为 getline 来自字符串库,您需要#include <string>
或#include <cstring>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.