getline功能不起作用

时间:2012-05-09 19:00:21

标签: c++ getline

有人可以告诉我使用哪个标头在C ++中使用getline()。我用过

#include<iostream>
#include<string>
#include<stdio.h>
#include<stdlib.h>
using namespace std;

它们似乎都没有起作用。

这是我到目前为止编写的整个代码

#include "stdafx.h"
#include<iostream>
#include<string>
#include<vector>
#include<set>
#include<map>
using namespace std;

class TextQuery
{
    typedef map<string, set<string::size_type> > word_map;
    TextQuery(ifstream &file)
    {
        FillLineVector(file);
        BuildMap(file);
    }

    void query(string);
private:
    word_map map;
    vector<string> LineVector;
    void FillLineVector(const ifstream&);
    void BuildMap(const ifstream&);
};

void TextQuery::FillLineVector(const ifstream& file)
{
    string line;
    while(getline(file,line)); //error:getline identifier not found
}

3 个答案:

答案 0 :(得分:2)

如果您使用的是版本,则需要iostream,可能还需要string。为什么这不起作用必须保持神秘,因为你没有提供额外的信息。

答案 1 :(得分:2)

如果您希望人们能够帮助您,请发布您的代码。无论如何,getline应该这样使用:

// getline with strings
#include <iostream>
#include <string>
using namespace std;

int main () {
  string str;
  cout << "Please enter full name: ";
  getline (cin,str);
  cout << "Thank you, " << str << ".\n";
}

http://www.cplusplus.com/reference/string/getline/

所示

答案 2 :(得分:1)

您的功能采用ifstream而不是istream,因此您必须包含<fstream>才能获得该定义。

但是,您可能最好通过istream使函数更通用,除非由于某种原因它们只能使用文件。在这种情况下,您只需要<iostream><string>,这是您已经拥有的。