请教getline读取行字符的问题

Sintak 2010-06-11 02:44:55
我的程序:
for( ; getline(cinWord, strWordTemp); ++js){ //从第一个文本读取一行
char *strWord=const_cast<char*>(strWordTemp.c_str());

for( ; getline(cin, lineCharTemp); ){ //从第二个文本读取一行
char *lineChar=const_cast<char*>(lineCharTemp.c_str());
if(strstr(lineChar, strWord)) count[js]++;
}


}
问题是,第二个读取文本的循环进行过一次后,就不能再次进入了。




===
如果你看不懂上面的,我换个简单的问
就是
int main(){
getline(a,b);
getline(a,b2);
}
上面的语句分别是 读取a中第一行到b 和 读取a中第二行到b2
我现在想两次都读取第一行,有什么办法么?
...全文
401 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
shihunjiangjie 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sintak 的回复:]

添加下面两句代码就OK~
==========
cin.clear(); //重置输入流条件状态为全有效状态;
cin.seekg(0,ios::beg); //设置到cin的开头
===========

[/Quote]很好
ForestDB 2010-06-11
  • 打赏
  • 举报
回复
帮顶。
Sintak 2010-06-11
  • 打赏
  • 举报
回复
尝试了各位推荐的fseek,编译时死活不通过,不知道是我的问题还是编译器的问题(g++)
然后顺藤摸瓜找到C++版本的“fseek”的用法,终于好了

添加下面两句代码就OK~
==========
cin.clear(); //重置输入流条件状态为全有效状态;
cin.seekg(0,ios::beg); //设置到cin的开头
===========

谢谢pengzhixi和各位o(≧v≦)o~~好棒,我刚开始学C++以后还请多多指教。


顺便借地备份一下C++其它很方便的控制流、刷新流的语句,结贴吧。

file.seekg(0,ios::end); //让文件指针定位到文件末尾
file.seekg(10,ios::cur); //让文件指针从当前位置向文件末方向移动10个字节
file.seekg(-10,ios::cur); //让文件指针从当前位置向文件开始方向移动10个字节
file.seekg(10,ios::beg); //让文件指针定位到离文件开头10个字节的位置

long pos = cin.tellg(); // 得到文件指针当前指向的文件位置。
*/

file.clear() ;//重置输入流条件状态为全有效状态;
fflush(stdin) ; //刷新残余输入流,也即清空输入流缓冲区;
fflush(stdout) ;//刷新残余输出流,也即清空输出流缓冲区;
pengzhixi 2010-06-11
  • 打赏
  • 举报
回复
先刷新下流状态,清空下缓冲区里面的数据,然后再设置文件指针。
cattycat 2010-06-11
  • 打赏
  • 举报
回复
第二个读取文本的循环进行过一次后,已经到文件尾部了。设一下重新到文件开头吧。
elegant87 2010-06-11
  • 打赏
  • 举报
回复
第二次读取的时候可以用fseek()进行定位
使得第二次读取的时候从文件头开始
int fseek( FILE *stream, long offset, int origin );
  第一个参数stream为文件指针
  第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移
  第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
  SEEK_SET: 文件开头
  SEEK_CUR: 当前位置
  SEEK_END: 文件结尾
yuhuaijun 2010-06-11
  • 打赏
  • 举报
回复
如果是读取文件,用fseek()/SetFilePointer()重新定位至文件开头,重新读取

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧