说我有:
int lol;
cout << "enter a number(int): ";
cin >> lol
cout << lol;
如果输入5,它将提示5。如果输入fd,它将提示一些数字。
我如何指定值,例如说我只想要一个int?
最佳答案
如果键入fd
,它将输出一些数字,因为这些数字是lol
在分配给它们之前碰巧存在的数字。 cin >> lol
不会写入lol
,因为它没有可接受的输入,因此只留下它,值就是调用前的值。然后输出它(UB)。
如果要确保用户输入的内容可以接受,可以将>>
包装在if
中:
if (!(cin >> lol)) {
cout << "You entered some stupid input" << endl;
}
另外,您可能希望在读入之前将其分配给
lol
,这样,如果读取失败,它仍具有一些可接受的值(并且不是要使用的UB):int lol = -1; // -1 for example
例如,如果您想循环播放直到用户提供有效输入,您可以执行
int lol = 0;
cout << "enter a number(int): ";
while (!(cin >> lol)) {
cout << "You entered invalid input." << endl << "enter a number(int): ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
// the above will loop until the user entered an integer
// and when this point is reached, lol will be the input number
关于c++ - 指定cin值(C++),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9142564/