我目前正在学习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;
答案 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
),否则返回数字值。