为什么不通过文件读取简单字符
Why Not Reading Simple Character Through File?
我正在从文件'中读取一个字符☼'这个字符是通过按(ALT+15)在记事本中键入的,现在我必须在控制台上打印这个字符和值15(这个字符的相应ASCII值)。问题是我得到了一个ASCII值为-2的方框字符。为什么这不是房地产在运作?
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream myFile;
myFile.open("input.txt");
char inputA;
myFile>>inputA;
cout<<inputA<<endl;
cout<<(int)inputA;
}
☼是unicode字符。unicode字符有各种不同的编码,如UTF-8、UTF-16和UTF-32。然而,所有编码都需要一个以上的字节来表示字符☼.事实上,这些表述是:
UTF-8 0xE2 0x98 0xBC
UTF-16 0x263C
UTF-32 0x0000263C
UTF-16和UTF-32中的字节顺序取决于系统的字节序。
您正试图将该字符读入单个char
中。这将只提取字符的单个字节。我不知道你的-2是从哪里来的,但当我在UTF-8编码上尝试它时☼,我得到的值是-30。这是因为具有表示0xE2
的有符号char
是-30。
如何正确读取字符也取决于编码。对于UTF-8,您需要为该字符读取一个3个char
的数组。对于UTF-16,可以使用char16_t
读取字符。对于UTF-32,有char32_t
。
相关文章:
- 如何使用 c++ 在命令行中创建一个简单的字符控制器?
- C++-将ASCII字符数组中可能的数值转换为字符的最简单方法
- 如何制作一个只包含字符的简单加载屏幕
- 将字符从一个字符串简单分配到另一个字符串不起作用
- 以简单的方式修改常量字符 * 与字符 * 内容
- 使用WinHttpReadData从简单php服务检索文件时删除的字符
- 简单的C++字符数组加密功能 - 段故障
- 为什么一个简单的字符*不起作用
- 在 Windows 上用拉丁字符 (Á ,ò ,ã) 制作一个简单的程序
- 判断当前字体是否支持unicode字符的简单方法
- 如何简单地使用无法识别的字符
- 将字符简单地更改为其位表示
- C++和 cin 字符数组的简单指针
- 试图忽略第一个字符之前的所有空格(迫切需要一个简单的轻推)
- 创建 2D 数组并在每个数据槽中填充不同字符的最简单方法是什么?
- 简单程序省略了第一个字符
- Qt中的第一个简单if语句:两个字符的比较
- 字符指针在简单的Boyer-Moore实现中出错
- 为什么不通过文件读取简单字符
- C++简单的字符检查