2 qq 33555452 qq_33555452 于 2016.03.12 20:16 提问

为什么getline总是获取不到第一单词呢
c++

求学霸帮帮忙图片

2个回答

qq423399099
qq423399099   Ds   Rxr 2016.03.12 22:23
已采纳

因为这句的原因istream_iterator in_vec(in_2);
楼主不信可以注释掉试试,一定能读到第一个单词
原因的话:
你将迭代器用in_2初始化以后其实指针是指向第一个单词的尾部(这点楼主应该知道吧,就像迭代器到end了以后,其实是指向最后一个元素的后面一样),然后再用getline读是读不到第一个单词的

qq_33555452
qq_33555452 那我有什么方法可以执行我想要的操作呢,求大神帮我一下
2 年多之前 回复
qq423399099
qq423399099 回复qq_33555452: 是流迭代器引起的 ,初始化以后它其实指针已经移到第一个元素的末尾处了
2 年多之前 回复
qq_33555452
qq_33555452 你说的指针是指文件自身的还是流迭代器呢,
2 年多之前 回复
qq_33555452
qq_33555452 我注释了的,可以用我就是没搞懂为什么他就不从第一个单词读取,嘿嘿,谢谢你,我要怎么解决呢
2 年多之前 回复
wangtiewei
wangtiewei   2016.03.12 22:11

前面加个打开文件的判断。是不是文件打开失败造成了句柄没有关联

qq_33555452
qq_33555452 谢谢回答,文件可以读的
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
在cin>>后使用getline无法读取到数据
C++ cin>> cin.get() cin.getline() cin>>P; vector<string> pstring; for(int i=0; i<P; i++){ getline(cin,tem); //读取不到数据 pstring.push_back(tem); } cin>>P; cin.ignore(
getline读取不等待输入的问题
先cin >>,然后getline读取时会发生一闪而过不等待输入的情况,用fflush(cin)清除输入缓冲区也是如此,纠结半天终于在妹神指导下搞清楚 由于输入一个数据后按了回车键,而getline没有忽略换行符,直接将前面输入的数字后面的换行符当作了输入,导致没有等待输入的情况。 此时,需要在getline前面添加cin.ignore()用来清除以回车结束的输入缓冲区的内容,消除上一次输入对
C++实现读取整行文本和每次只读入一个单词
预备知识: 1.四种初始化string对象的方式:   string s1;    //默认构造函数,s1为空串   string s2(s1); //将s2初始化为s1的一个副本   string s3("value");  //将s3初始化为一个字符串字面值副本   string s4(n,'c');    //将s4初始化为字符'c'的n个副本 2.endl:用来输出一个
关于用Getline读取文件只能读取首行的问题
自己再代码中用getline读取文件时只能读取首行,这个问题困扰了我很久,最开始我以为是函数没有识别换行,任然再第一行读取东西,但这个行getline这个函数的基本功能就相悖了,在稍作测试后我就换了其他思路,转向其他方向。 void ReadMan(list &Gtm,char *filename) { ifstream ifile(filename,ios::in); if (ifile.
【Q&A】getline读取文本文件的问题
很多时候,我们用getline函数读取文本文件的每一行,留待以后进行处理(如:用istringstream对象解析行中的内容),代码片段如下: ifstream in ("Test.txt"); if (!in) return ; string sLine; while (getline (in, sLine)) { // do s
GCC下getline()函数没有完整读完一行的问题
C++中在未知文件中一行最大程度情况下使用getline()
C++获取一行字符串getline(cin,s),不能用cin>>s
腾讯笔试,字符串处理 想得到输入"I love U.",由于有空格,应该用getline函数; 这样是错误的: string s; cin>>s; //错误,有空格会停止 正确的是这样的: string s; getline(cin,s);//正确,获取一行
(C++)viScanf读取不到数据的解决办法
我们在开发仪器自动化程序时一般会调用viPrintf来发送命令控制仪器,然后一般性地会想到viScanf来获取仪器返回的数据,然并卵。 最终实验viRead成功读取,原因不详。 另注:viPrintf(vi, "*RST\n"); 每个命令后必须加\n,否则“害人”啊!!!
各种字符读取方法的比较(cin,getline等)
读取一个字符或一个字符串的方法有很多,也有些陷阱,下面总结一下。   (1)>>操作符 >>操作符的重载,有很多种原型,能够从输入流抽取各种形式的输入(int、单个字符、字符串等),也是我们最常用的一种读取字符的方式。它需要配合输入流对象使用(cin就是iostream类中的istream类对象静态成员),并且返回值是输入流的引用,所以能够有cin>>a>>b这样的写法。
get和getline函数差别
//get(char*array,int count,char delim)与getline(char*array,int count,char delim)的不同点: //1.当输入的字符数小于count时遇到字符delim,get函数不会读取delim这个字符,而getline函数将读取这个字符但是不存进array当中去,而是将其丢弃,当然,两者都会在读取的字符串后面自动加上'\0'(t