【发布时间】:2018-10-22 08:33:37
【问题描述】:
我遇到的问题是,如果您输入任何字符串,cin 会将 int 分配为 0。一个有趣的发现是,如果您稍后将 cin 带入一个字符串,您将获得您为 int 输入的整个字符串.由于某种原因,cin.fail() 总是返回 true,即使使用 cin.ignore() 等,并且 if(cin >> startingPosition) 也总是返回 true。那么,我如何让它甚至识别出它是一个字符串而不是一个 int 呢?如,如果它是一个字符串,我如何让它再次循环?
int getUserPosition(bool volatileCall = false) {
cout << "Which slot do you want to drop the chip in (0-8)? " << endl;
int startingPosition;
cin >> startingPosition;
while (startingPosition >= WIDTH || startingPosition < 0) {
cout << "Invalid slot." << endl << endl;
if (volatileCall) {
return -1;
}
cout << "Which slot do you want to drop the chip in (0-8)? " << endl;
cin >> startingPosition;
cout << startingPosition << endl;
}
return startingPosition;
}
【问题讨论】:
-
请详细说明您的问题,或者问我们一个问题。
-
“我遇到的问题是,如果你输入任何字符串,cin 会将 int 分配为 0。” 我不明白这是怎么回事。 .. 无效输入还能做什么?
-
@Blaze 另一种方法是将 int 保留为以前的值,或报告错误。
-
一个小术语问题:赋值从另一个方向进行,从值到对象;它将 0 分配给 int。