无符号字符的标准输入
Standard Input for Unsigned Character
我试图通过程序发送无符号字符,我希望能够通过标准输入(即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被错误地解释为无符号字符50,而e被正确地解释为无符号字符2?
当然,在你的解释之后,你可以解释如何获取用户输入并将其转换为我发送2而不是'2'。
由于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;
}
当您通过std::cin
输入2
时,它被正确地解释为字符字面量'2'
。
你应该替换
unsigned char e = 2;
unsigned char e = '2';
相关文章:
- 无法在 C++ 中输入字符数组
- 当我输入字符类型的数字时,为什么我无法获得整数?
- 从标准输入读取文件后读取用户输入
- 在不使用字符串库的情况下输入字符*
- 如何从标准输入中检测格式化输入错误?
- C++ - 标准输入环路
- 快速读取标准输入缓冲区,无需检查
- 将标准输入中的双精度存储在矢量中
- 如何将 getline 与标准输入一起使用?
- 从 C++ 中的标准输入迭代读取字节
- C++计算标准输入的字数
- 如何从 c++ 中的给定标准输入中获取每个字符的偏移量?
- 为什么此代码从标准输入中少一个输入?
- 如何在C++中从标准输入中获取变量输入
- C++ 从标准输入读取文件名
- 从标准输入读取多个类型时出现问题
- 查找字符在标准输入文本中出现的次数
- 在执行cin之后,对标准输入中的字符数进行计数
- C++ 如何从标准输入加载到最多 5 个字母数字字符的字符数组
- 无符号字符的标准输入