我正在尝试通过程序发送无符号字符,我希望能够通过标准输入(即std :: cin)获取数字。例如,当我输入2时,我希望它发送☻(unsigned char 2)。当我使用代码时:
std::cout << "Enter values: ";
{
unsigned char d;
unsigned char e = 2;
std::cin >> d;
WriteFile(file, &d, 1, &written, NULL);
std::cout << "d= " << d << "\n";
std::cout << "e= " << e;
}
我得到了
Enter values: 2
d=2
e=☻
有人可以告诉我为什么d被正确解释为unsigned char 50而e被正确解释为unsigned char 2?
当然,在您的解释之后,您可以解释如何获取用户输入并进行转换,以便我发送2而不是&#39; 2&#39;。
答案 0 :(得分:3)
由于std::cin >> d;
默认情况下会读取char
类型,因此输入2
会转换为字符2
(使用ASCII代码50),而不会转换为ASCII码2.这是一种正常行为,否则尝试从cin
读取数字将最终成为一团糟。
另一方面,在unsigned char e = 2;
中,您明确地为变量赋值(2
),因此编译器会盲目地将其赋值给e
。
你可能想要这个:
#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;
}
答案 1 :(得分:0)
当您通过2
输入std::cin
时,它被正确解释为字符文字'2'
。
你应该替换
unsigned char e = 2;
与
unsigned char e = '2';