当我输入123456时,以下代码生成1 2 3 4 5 6 但是由于数字只能包含一个数字,因此该代码是否应该引发错误?
#include <iostream>
using namespace std;
int main()
{
char digit;
cout << "Enter a six-digit number: ";
for (int p = 1; p <= 6; p++) {
cin>>digit;
cout<<digit<<" ";
}
return 0;
}
答案 0 :(得分:4)
使用cin>>digit
,您可以从char
流中请求一个 cin
。
std::cin
是istream
类型的basic_istream<char>
类型,因此它基本上是char
的缓冲区。
因此,cin>>digit
将始终有效,只要输入流处于有效状态,它就会从流中删除一个char
并将其保存在digit
中,并且有可用数据。
答案 1 :(得分:2)
第一次,cin
并没有“知道”您尚未在digits
中存储值(尽管没有初始化程序,您也可能拥有)。
它也不是第二次或第三次或第四次或第五次或第六次。
它只是用从流中读取的内容替换已经存在的内容。
这是正常现象,并非错误原因。
在程序结束时,digits
包含字符'6'
的ASCII码(可能是)。只是那个角色。您看到了多个值的输出,因为您在循环中分别输出了每个值。