c++ - 为什么这里会报”没有与参数列表匹配的 重载函数 "getline" 实例“的错误?

浏览:29日期:2023-04-10

问题描述

我在把C++primer中的433页代码照着敲到vs2015后,出现以下问题。

#include<vector>#include<string>#include<map>#include<memory>#include<set>class QueryResult;class TextQuery {public: using line_no = std::vector<std::string>::size_type; TextQuery(std::ifstream&); QueryResult query(const std::string&) const;private: std::shared_ptr<std::vector<std::string>> file; std::map <std::string, std::shared_ptr<std::set<line_no>>> wm;};TextQuery::TextQuery(std::ifstream &is) :file(new std::vector<std::string>){ std::string text; while (getline(is, text)) {//这里getline会标红,出现前面所述的错误file->push_back(text);int n = file->size() - 1;istringstream line(text);//这里line会标红,报错:不允许使用不完整的类型std::string word;while (line >> word) {//这里>>会标红:禁止显示状态没有与这些操作数匹配的 '>>' 运算符 } }}

问题解答

回答1:

#include <fstream> // file stream#include <sstream> // string stream

相关文章: