为什么不通过文件读取简单字符

Why Not Reading Simple Character Through File?

本文关键字:简单 字符 读取 文件 为什么不      更新时间:2023-10-16

我正在从文件'中读取一个字符☼'这个字符是通过按(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