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

why std::cin doesn't give error on "char"

本文关键字:出错 错误 char std cin 为什么      更新时间:2023-10-16

这里有一个小代码:

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

当我输入"w"时,我得到"w被按下"。当我输入"www"时,我得到连续3次"w被按下"。

有人能解释一下为什么会发生这种情况吗?

感谢

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

有一个queue输入。如果输入过多,您的输入将在耐心等待。。。

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

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;
}
相关文章: