CS106L_Lecture3-Types and Advanced Streams
cin 的读取

我们可以看到,当我们输入 Avery Wang 时,
在 cin 的缓冲区里,只有 Avery 被读走了,后面还剩 Wang\n
而下一个将要被读取的位置在 W 这里
为什么 cin >> name; 只读取出 “Avery”?
因为对于字符串 name 来说,>> 默认是 按空白分隔读取 的
也就是说它会:
跳过前导空白
一直读,直到遇到空格、换行、tab为止
为什么 cin >> age; 会失败
在输出结果中,显示的 age 是 0 ,
这是因为 age 是 int,
cin 期待读取到一个整数,
而缓冲区里下一个有效字符是 W ,而不是数字
于是:
cin 无法将 W 解析成 int
从而本次读取失败
fail bit 被设置为 1
所以我们可以看到右边的状态位中,F被点亮了
The worst
一旦 fail bit 被置上,后续所有的 cin 读取都会直接失败!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Xu Jinyao!