接受用户输入的只能为1位数字的整数

时间:2018-09-23 23:04:40

标签: c++

我目前正在学习c ++,并且正在研究一个项目。我的程序整体上是从0-9值中随机分配3个数字或自行设置。我能够获得随机数字,但不能自己设置数字。问题是,当我尝试将数字作为int数据类型时,它为一个输入生成了3个数字。应该是x = 1,y = 2,z = 3 ....值是:123.为了解决这个问题,我改用数据类型为字符,但使我感到困惑的是随机数是int值,而我的设置数是是char值。这是我当前的代码如下:

if ( userInput == 's') {
    cout << "Enter three distinct digits each in the range 0..9 (e.g. 354)";
    char num1 = ' ';
    char num2 = ' ';
    char num3 = ' ';
    cin >> num1 >> num2 >> num3;
    cout << endl << "Values to guess are: " << num1 << num2 << num3;

1 个答案:

答案 0 :(得分:1)

这可以帮助您更好地了解所需的内容。

例如考虑使用:

int x;
cin >> x;  // read an integer from the standard input stream (ignoring initial white space)

这将从标准中读取一个整数,而

char c;
cin >> c;  // read a character from standard input stream (ignoring initial white space)

从标准中读取单个字符(通常是ASCII字符值)。

如果标准输入中包含以下内容:

354

第一个以x = 354结尾,第二个以c = '3' // = 51结尾。

根据我的理解,您想从standard中读取3位数字并将它们存储在3种单独的数字数据类型中。您可以使用以下代码执行此操作:

uint8_t get_digit() {
    char c;
    cin >> c;                        // read a single non-whitespace character
    if (! is_digit(c) ) return -1;   // Error did not read a digit return bogus number
    return (uint8_t)(c - '0');       // convert ascii digit to number and return value
}

该代码将读取单个字符并检查它是否是数字,否则返回假结果(-1),否则返回数字值。