Standard Input for Unsigned Character

删除回忆录丶 提交于 2019-12-02 13:42:32

Because std::cin >> d; reads by default a char type, so the input 2 translates into the character 2 (with ASCII code 50) and not the character represented by the ASCII code 2. This is a normal behaviour, otherwise trying to read numbers from cin will end up being a mess.

On the other hand, in unsigned char e = 2; you explicitly assign a value (2) to the variable, so the compiler blindly assigns it to e.

You probably want this:

#include <iostream>
#include <string>
using namespace std;

int main(int argc, char *argv[])
{
    string myString;
    cin >> myString;
    char c = atoi(myString.c_str());
    cout << c << endl;
}

When you enter 2 via std::cin, it's correctly interpreted as the character literal '2'.

You should replace

unsigned char e = 2;

with

unsigned char e = '2';
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!