一段c++程序的疑惑

magicwwh 2009-11-19 10:38:36
// read homework grades from an input stream into a vector<double>
istream& read_hw(istream& in, vector<double>& hw)
{
if (in) {
// get rid of previous contents
hw.clear() ;
// read homework grades
double x;
while (in >> x)
hw.push_back(x);
// clear the stream so that input will work for the next student
in.clear();
}
return in;
}

以上是代码,里面的“if (in)”是起什么作用的?
...全文
208 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
forwin 2009-11-19
  • 打赏
  • 举报
回复
if (in)
判断是否指向有效的缓冲区
while (in >> x)
判断读取缓冲区是否正确
小小攻城师 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 magicwwh 的回复:]
引用 9 楼 na2650945 的回复:
引用 3 楼 akirya 的回复:
判断 输入流是否处于错误状态。

正解。
判断输入的是否是期待的输入型。

我试了试,不加if(in)也能判断!
[/Quote]
不会吧 我知道这是accelerated c++上前三章好想的例子
我当时做过的 这个就是来判断是否是错误状态
如果去掉是无法判定的
deng1243 2009-11-19
  • 打赏
  • 举报
回复
楼上说的很详细了
magicwwh 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 na2650945 的回复:]
引用 3 楼 akirya 的回复:
判断 输入流是否处于错误状态。

正解。
判断输入的是否是期待的输入型。
[/Quote]
我试了试,不加if(in)也能判断!
na2650945 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 akirya 的回复:]
判断 输入流是否处于错误状态。
[/Quote]
正解。
判断输入的是否是期待的输入型。
magicwwh 2009-11-19
  • 打赏
  • 举报
回复
回7L
输入流被破坏到底是什么意思呢?
if(in)和后面的while(in >> x)的作用有什么不同?
sj13426074890 2009-11-19
  • 打赏
  • 举报
回复
判断输入流是否被破坏
magicwwh 2009-11-19
  • 打赏
  • 举报
回复
回5L
不正确输入指的是什么样的输入呢?
  • 打赏
  • 举报
回复
判断输入流是不正常输入
magicwwh 2009-11-19
  • 打赏
  • 举报
回复
in.clear(); 这句不是把输入流设置为正确状态了吗?
  • 打赏
  • 举报
回复
判断 输入流是否处于错误状态。
magicwwh 2009-11-19
  • 打赏
  • 举报
回复
如果把if(in)去掉会出现什么bug呢?
along198933 2009-11-19
  • 打赏
  • 举报
回复
应该是缓冲区如果有数据的话,in的值为1,if(in)后面的语句就会继续.....不知道对不对 新手
xie6723632 2009-11-19
  • 打赏
  • 举报
回复
if(in)是判断输入流是否为错误状态,有三种错误状态,第一个是到达文件尾,第二个是系统出现问题,第三个是非法输入。相当于if(in)和if(in.eof()&&in.fail()&&in.bad())等价,代表流的几种状态,if(in>>a)和if(in)是一样的,>>运算符重载后返回的是左值,即流的引用,所以你才能cin>>a>>b这样用,你的第一个if(in)是判断是否做好准备工作,即在你的函数运行前是否有效,因为可能由于上次函数的原因或个人原因在以前没有刷新流,导致错误。而内部的则是检测你自己输入后流是否出现错误了。
perfecttt 2009-11-19
  • 打赏
  • 举报
回复
get rid of previous contents
防止上次的输入流到这一次输入里了。
haoka416 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 forwin 的回复:]
if (in)
判断是否指向有效的缓冲区
while (in >> x)
判断读取缓冲区是否正确
[/Quote]
up
friend556 2009-11-19
  • 打赏
  • 举报
回复
判断输入流是否结束
lovesi3344 2009-11-19
  • 打赏
  • 举报
回复
if(in)其实就是if(in!=0)
或者更复杂的if(!(in==0))
即,in是有效的
小赌移情 2009-11-19
  • 打赏
  • 举报
回复
就是檢查輸入是否有効 你可以自己傳個0給他調試看看
bean11222 2009-11-19
  • 打赏
  • 举报
回复
判断输入流是否处于出错状态~

64,637

社区成员

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

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