读入句子时发生的诡异事件

albb318 2009-02-08 11:01:45
C++Primer 的15.42题,文本查询程序,一次读入一个句子。
TextQuery类中的ReadFileS():

void ReadFileS(ifstream &input)
{
string TempLine;
line_no LineNum=0;
input.clear();
stringstream TempStreamS;
TempStreamS.clear();
char TempChar;
while(input.get(TempChar),TempStreamS<<TempChar)//一次输入一个字符
{
if(!input)
break;
if(TempChar=='.'||TempChar=='?'||TempChar=='!')//判断是否是句子终结
{
getline(TempStreamS,TempLine);
LineList.push_back(TempLine);
stringstream TempStream(TempLine);
string TempWord;
while(TempStream>>TempWord)//建立WordMap
{
WordList[TempWord].insert(LineNum);
}
++LineNum;
TempStreamS.clear();
}
}
input.close();
input.clear();
}


但是会出现诡异的结果,如图:

...全文
122 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2009-02-11
  • 打赏
  • 举报
回复
建议你找配套的习题解答先看看
albb318 2009-02-11
  • 打赏
  • 举报
回复
用的是VS2008
albb318 2009-02-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aheroofeast 的回复:]
兄弟,查查标准库的文档吧。getline好像要把结束符读进来的
[/Quote]
istream中的类提供了一些面向行的类成员函数;getline()和get()。这两个函数都读取一行输入,直到到达换行符。然而,随后getline()将丢弃换行符,而get()将换行符保留在输入序列中。


不太理解,能说详细些吗
王旺旺旺 2009-02-08
  • 打赏
  • 举报
回复
兄弟,查查标准库的文档吧。getline好像要把结束符读进来的
albb318 2009-02-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hairetz 的回复:]
...看不到图。
[/Quote]
囧,再发一遍
http://hiphotos.baidu.com/ch3cooh/pic/item/5e7ca48bfc8566ccfc1f1025.jpeg
  • 打赏
  • 举报
回复
...看不到图。
waizqfor 2009-02-08
  • 打赏
  • 举报
回复
没看明白 LZ这图是拿什么调试的 看不清楚

65,210

社区成员

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

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