中易网

一个C++关于编写成员函数的问题。

答案:2  悬赏:40  
解决时间 2021-03-12 09:42
#include <iostream>
#include<string>
//包含顺序容器的头文件.
#include <vector>
#include<list>
#include<deque>
//包含容器适配器的头文件.
#include<stack>
//包含关联容器的头文件.
#include<map>
#include<set>
using namespace std;
class Textquery
{
public:
typedef std::vector<std::string>::size_type line_no;
void read_file(std::ifstream &is)
{store_file(is);build_map();}
std::set<line_no> run_query(const std::string&) const;
std::string text_line(line_no) const;
private:
void store_file(std::ifstream&);
void build_map();
std::vector<std::string> lines_of_text;
std::map<std::string,std::set<line_no>> word_map;
}
void Textquery::store_file(ifstream &is)
{
string textline;
getline(is,textline);

以上代码,到了getline的时候提示说没有这个版本的重载函数,可是我是照抄C++ PRIMER上的啊?为啥会出错?
}
最佳答案
getline 这个函数的参数你传错了,有连个getline的模板函数,他们分别是:
1 istream& getline ( istream &is , string &str , char delim );
参数
  is 进行读入操作的输入流   str 存储读入的内容   delim 终结符
返回值
  与参数is是一样的
功能
  将输入流is中读到的字符存入str中,直到遇到终结符delim才结束。对于第一个函数delim是可以由用户自己定义的终结符;对于第二个函数delim默认为 '\n'(换行符)。   函数在输入流is中遇到文件结束符(EOF)或者在读入字符的过程中遇到错误都会结束。   在遇到终结符delim后,delim会被丢弃,不存入str中。在下次读入操作时,将在delim的下个字符开始读入。   举例:   int main()   {   string str;   getline(cin,str,'#');   char c=getchar();   cout<<str<<' '<<c<<endl;   return 0;   }   输入为:aa#b   输出为:aa b
2 cin.getline(char* cha,int num,char f);
参数:cha 读取的字符串
num 个数
f 结束符
全部回答
不知道是书上错了,还是你抄错了。 1. 没有包含fstream库,#include<fstream> 2. class Textquery {...}后面没有分号 下面是修改后的代码: #include <iostream> #include <fstream> #include<string> //包含顺序容器的头文件. #include <vector> #include<list> #include<deque> //包含容器适配器的头文件. #include<stack> //包含关联容器的头文件. #include<map> #include<set> using namespace std; class Textquery { public: typedef std::vector<std::string>::size_type line_no; void read_file(std::ifstream &is) {store_file(is);build_map();} std::set<line_no> run_query(const std::string&) const; std::string text_line(line_no) const; private: void store_file(std::ifstream&); void build_map(); std::vector<std::string> lines_of_text; std::map<std::string,std::set<line_no> > word_map; }; void Textquery::store_file(ifstream &is) { string textline; getline(is,textline); }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
乐享婴童服饰在哪里啊,我有事要去这个地方
未成年人在任何情况下都不能在网吧上网?
辉煌的今天120字
常用内置晶振及充电电池的时钟芯片有哪些
广场舞你追随我歌词中有你追随我这是一首什么
英语没过四级 怎样复习考研英语二
江淮好运在哪生产
迪美达美容美发机构在哪里啊,我有事要去这个
急行跳远哪个脚发力
用PS把一张照片嵌入另一张,但是下面这张也要
快递发货对方要货到付款,需要跟快递公司签约
我的数学书忘在补习班了,书上还有作业没完成
三环北路/新旺路(路口)这个地址在什么地方,
给病人吸痰的时候,为什么管子只能左右向上提
我可配置QQ飞车可以多少开??求解!!!急!
推荐资讯
山水牌电视机打不开
若直线ax+by=1与圆x^2+y^2=1有两个公共点,则
手机CPU里,MT6752与高通615哪个更加省电?对
上班女性适合戴什么蜜蜡
清丰公积金在濮阳买房可以对冲吗
顺安楼-咖啡厅在什么地方啊,我要过去处理事
洪秀全的拜上帝教为什么能够被作为指导太平天
spirngMVC+freemarker怎么获取$的值
有谁换过机子的呀 说说都有哪些流程
iPhone5每次链接蜂窝数据或wlan时,手机信号
什么食物吃了会没奶啊?
用尽一生爱你一尘不变歌词
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?