BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #79307同步于 2014/5/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

std::cin >> i有确定的值么

NM999
2014/5/11镜像同步8 回复
记得C里面scanf是有确定的值的,C++里的cin呢,如果请求输入一个数字,但是输入一个字母,怎样做到让它返回重新输入的界面呢,求助 还有char i;cin >> i,是不是输入回车是无效的啊,谢谢了
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
gaoweiwei机器人#1 · 2014/5/11
第一个问题: int ch; while (!(cin >> ch)) { cin.clear(); cin.ignore(); } 第二个问题,回车是结束输入的标记,不是有效的输入。windows下想捕获回车符\r的话用getch。 想捕获换行符\n的话用getchar或cin.get(). 【 在 NM999 的大作中提到: 】 : 记得C里面scanf是有确定的值的,C++里的cin呢,如果请求输入一个数字,但是输入一个字母,怎样做到让它返回重新输入的界面呢,求助 : 还有char i;cin >> i,是不是输入回车是无效的啊,谢谢了
NM999机器人#2 · 2014/5/11
请问能不能用一个int型变量,将cin>>i的值赋给他呢,答案又是多少呢 【 在 gaoweiwei 的大作中提到: 】 : 第一个问题: : [code=c] : int ch; : ...................
gaoweiwei机器人#3 · 2014/5/11
不可以。cin没有定义这样的转换。 【 在 NM999 的大作中提到: 】 : 请问能不能用一个int型变量,将cin>>i的值赋给他呢,答案又是多少呢
NM999机器人#4 · 2014/5/11
可是你的程序里while的判断条件不是用了cin>>i的值么,为什么就不行了呢,请问 【 在 gaoweiwei 的大作中提到: 】 : 不可以。cin没有定义这样的转换。
gaoweiwei机器人#5 · 2014/5/11
cin >> i 的值还是cin,而cin只定义了向bool型的转换,并没有定义向int的转换,当然非要这么做的话,可以int x = int(bool(cin >> i))不过没什么意义。 【 在 NM999 的大作中提到: 】 : 可是你的程序里while的判断条件不是用了cin>>i的值么,为什么就不行了呢,请问
NM999机器人#6 · 2014/5/11
原来是这样啊,多谢大神了~ 【 在 gaoweiwei 的大作中提到: 】 : cin >> i 的值还是cin,而cin只定义了向bool型的转换,并没有定义向int的转换,当然非要这么做的话,可以int x = int(bool(cin >> i))不过没什么意义。
gaoweiwei机器人#7 · 2014/5/11
客气了。为了支持链式赋值或者链式输入输出,cin,cout或者其他类在重载>> << = 时都会返回自己的引用,来保证cin >> a >> b >> c; cout << a << b <<c; 等可以正确使用。 同时为了方便直接使用if(cin) if(cout)判断输入输出流是否有错误,他们也会重载bool operator(),来保证cin cout向bool型的成功转换。其他类型就没必要转换了 【 在 NM999 的大作中提到: 】 : 原来是这样啊,多谢大神了~
clangpp机器人#8 · 2014/5/13
Re,正解 【 在 gaoweiwei (三生三世) 的大作中提到: 】 : 客气了。为了支持链式赋值或者链式输入输出,cin,cout或者其他类在重载>> << = 时都会返回自己的引用,来保证cin >> a >> b >> c; cout << a << b <<c; 等可以正确使用。 : 同时为了方便直接使用if(cin) if(cout)判断输入输出流是否有错误,他们也会重载bool operator(),来保证cin cout向bool型的成功转换。其他类型就没必要转换了 通过『我邮2.0』发布