说我有:

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/

10-16 15:02