为什么std :: cin没有给出“char”错误

时间:2013-11-25 22:20:17

标签: c++ inputstream cin

这是一个小代码:

char a;
while(std::cin >> a) {
    std::cout << a << " is pressed\n";
}

当我输入&#34; w&#34;时,我得到&#34; w被按下&#34;。 当我输入&#34; www&#34;时,我得到&#34; w被按下&#34;连续3次。

有人可以解释为什么会这样吗?

由于

3 个答案:

答案 0 :(得分:4)

当您使用std :: cin读取char变量时,它一次读取一个字符。这就是为什么你在输入www的while循环中得到3次迭代的原因。

答案 1 :(得分:0)

queue个输入。如果你输入太多,你的输入会等待患者...

答案 2 :(得分:0)

答案的第一部分在代码的第一行。

char a;

变量a是一个char,一个8位值,通常用于存储代表显示字符的代码。如果显示为ASCII,则(值)0 =无字符,(值)32 =空格,值48 =(字符)'0'等。

std::cin是类std::istream的一个实例,它有各种成员和运算符重载来处理不同类型。对于char,您正在调用

std::istream::operator(char)

从输入流中读取一个char,恰好一个,然后返回。

#include <iostream>
int main()
{
    char a, b, c;
    std::cin >> a >> b >> c;
    std::cout << "a = " << a << ", b = " << b << ", c = " << c << '\n';
    return 0;
}