繁体   English   中英

std 没有成员“getline”?

[英]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::getlinestring头中定义。

#include <string>

此外,您的代码没有使用cstringcstdiocmathcstdlib 为什么要包括这些?

编辑:为了澄清关于cstringstring标头的混淆, cstringC 运行时库的string.h的内容拉入std命名空间; stringC++ 标准库的一部分,包含getlinestd::basic_string<> (及其特化std::stringstd::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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM