基本上没办法,C++中有 5 种字符串类型:
char a[] = "...";
wchar_t b[] = L"...";
char8_t c[] = u8"...";
char16_t d[] = u"...";
char32_t e[] = U"...";
对于char,其编码由实现定义。比如“中文windows”用的是gbk,但用户可以自己更改。
对于wchar_t,其编码由实现定义。比如windows用的是utf16,但很多unicode编码不支持。
即便你用 char8_t、char16_t、char32_t,那 unicode 标准也在不停的添加字符,况且unicode字符相近则共用,不区分国家。
而且你还是从“文本”中读取“汉字”。
“文本”的编码你知道吗?有BOM头还好说,但大部分是没有BOM头的。
所以我真怀疑你一定要“汉字”是不是有必要。