while(cin >> x)的说明
while循环中的cin#
在学习C++的过程中,C++ Preimer Plus中经常出现while(cin >> x)
,为什么可以这么写?cin是一个输入流对象,cin >> x
单独使用时,返回结果也是一个cin对象(修改过的)。>>是运算符的重载,其函数原型istream& operator>> (istream& is, typename e);
,其中typename可以是char*,int等等。
那么在while(cin >> x >> y)
中,其返回值是什么?在while(cin >> x >> y)
执行情况如下:
- 第一个>>运算符从输入流对象cin中提取数据到x中并且返回已经修改过的cin
- 第二个>>运算符再从cin中提取数据到y中并且返回再次修改过的cin
- 最后会判断cin的流状态(good、fail、bad、eof),如果流状态为good则表达式
cin >> x >> y
返回true,满足while循环执行条件
有语句double x; while(cin >> x)
,如果实际输入的x与所需的类型不匹配,表达式会返回false,然后退出while循环。
int main()
{
double x;
std::cout << "Enter x(q to quit): ";
while(std::cin >> x) //当输入字符时退出循环,输入的类型与double不匹配
{
...
}
return 0;
}
参考:
作者:qianxiaohan
出处:https://www.cnblogs.com/qianxiaohan/p/18187068
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战