返回信息流记得C里面scanf是有确定的值的,C++里的cin呢,如果请求输入一个数字,但是输入一个字母,怎样做到让它返回重新输入的界面呢,求助
还有char i;cin >> i,是不是输入回车是无效的啊,谢谢了
这是一条镜像帖。来源:北邮人论坛 / cpp / #79307同步于 2014/5/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
std::cin >> i有确定的值么
NM999
2014/5/11镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
第一个问题:
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,是不是输入回车是无效的啊,谢谢了
请问能不能用一个int型变量,将cin>>i的值赋给他呢,答案又是多少呢
【 在 gaoweiwei 的大作中提到: 】
: 第一个问题:
: [code=c]
: int ch;
: ...................
不可以。cin没有定义这样的转换。
【 在 NM999 的大作中提到: 】
: 请问能不能用一个int型变量,将cin>>i的值赋给他呢,答案又是多少呢
可是你的程序里while的判断条件不是用了cin>>i的值么,为什么就不行了呢,请问
【 在 gaoweiwei 的大作中提到: 】
: 不可以。cin没有定义这样的转换。
cin >> i 的值还是cin,而cin只定义了向bool型的转换,并没有定义向int的转换,当然非要这么做的话,可以int x = int(bool(cin >> i))不过没什么意义。
【 在 NM999 的大作中提到: 】
: 可是你的程序里while的判断条件不是用了cin>>i的值么,为什么就不行了呢,请问
原来是这样啊,多谢大神了~
【 在 gaoweiwei 的大作中提到: 】
: cin >> i 的值还是cin,而cin只定义了向bool型的转换,并没有定义向int的转换,当然非要这么做的话,可以int x = int(bool(cin >> i))不过没什么意义。
客气了。为了支持链式赋值或者链式输入输出,cin,cout或者其他类在重载>> << = 时都会返回自己的引用,来保证cin >> a >> b >> c; cout << a << b <<c; 等可以正确使用。
同时为了方便直接使用if(cin) if(cout)判断输入输出流是否有错误,他们也会重载bool operator(),来保证cin cout向bool型的成功转换。其他类型就没必要转换了
【 在 NM999 的大作中提到: 】
: 原来是这样啊,多谢大神了~
Re,正解
【 在 gaoweiwei (三生三世) 的大作中提到: 】
: 客气了。为了支持链式赋值或者链式输入输出,cin,cout或者其他类在重载>> << = 时都会返回自己的引用,来保证cin >> a >> b >> c; cout << a << b <<c; 等可以正确使用。
: 同时为了方便直接使用if(cin) if(cout)判断输入输出流是否有错误,他们也会重载bool operator(),来保证cin cout向bool型的成功转换。其他类型就没必要转换了
通过『我邮2.0』发布