指定cin值(c ++)

时间:2012-02-04 16:53:08

标签: c++ int cout

说我有:

int lol;
cout << "enter a number(int): ";
cin >> lol
cout << lol;

如果我输入5然后它就会输出5.如果我键入fd它会输出一些数字。 我怎样才能指定值,比如说我只想要一个int?

1 个答案:

答案 0 :(得分:7)

如果您输入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