当我输入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;
}
使用cin>>digit
,您可以从char
流中请求一个cin
。
std::cin
是istream
类型,它是basic_istream<char>
,所以它基本上是char
的缓冲区。
并且因为cin>>digit
将始终有效并且从流中移除一个char
并将其保存在digit
中,只要输入流处于有效状态并且具有可用数据。
第一次通过时,cin
并不“知道”你还没有在digits
中存储一个值(尽管缺乏初始化,你可能也有)。
它也不知道这是第二次或第三次或第四次,第五次或第六次。
它只是替换了它从流中读取的内容。
这是正常的预期行为,而不是错误原因。
在程序结束时,digits
包含字符'6'
的ASCII代码(可能)。只是那个角色。您将看到多个值输出,因为您在循环中单独输出每个值。