所以我正在阅读'加速C ++',在那里我读到了wchar_t
,我用Google搜索了一个日文字符并在我的程序中引用了以下声明:
wchar_t japs = 'の';
它给了我这个错误:
input.cpp:20:20: warning: multi-character character constant [-Wmultichar]
wchar_t japs = 'の';
我不懂日语,但我对这里发生的事情毫无头绪。谷歌搜索了一些,一些解决方案正在讨论,这是一个Linux问题,一些解决方案正在谈论UTF-8编码。
有人能说出来,实际发生了什么?我的环境在Ubuntu
?
答案 0 :(得分:3)
您的编辑支持Utf8。如果你输入这个角色'の'它将被编码为字符序列[0xe3,0x81,0xae]。 wchar_t是整数值的typedef。您应该使用UTF8编码并将字符存储在字符串中。例如char japs [] ="の&#34 ;; 如果您的终端支持utf-8(它正常),您可以在c字符串中使用日语字符,就像使用拉丁字符一样。请记住,一个日语字符在c字符串中占用三个或更多字节。 这种类型的字符串称为多字节字符串。如果您喜欢麻烦,可以将带有utf8编码字符的字符串转换为wchar_t类型的数组。通常每个角色都需要32位。看" man mbstowcs"。