std没有成员'getline'?

问题描述 投票:16回答:3

我正在尝试使用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);
        }
    }
}
c++ io std getline
3个回答
32
投票

[std::getlinestd::getline标头中定义。

string

此外,您的代码未使用#include <string> cstringcstdiocmath中的任何内容;为什么要包括这些?

EDIT:为了澄清对cstdlibcstring标头的混淆,stringC运行时库的 cstring的内容拉到string.h命名空间中; stdC ++标准库的一部分,包含stringgetline(及其专业std::basic_string<>std::string)等–两个very不同的头。 >


3
投票

正如ildjarn所指出的,该函数在std::wstring中声明,很遗憾您在以下位置未收到错误:


0
投票

之所以这样,是因为getline来自字符串库,您需要while( getline(ifile,line) ) { } #include <string>

© www.soinside.com 2019 - 2024. All rights reserved.