小编Fre*_*rik的帖子

u8文字应该如何运作?

无法理解u8文字的语义,或者更确切地说,理解g ++ 4.8.1的结果

这是我的期望:

const std::string utf8 = u8"åäö"; // or some other extended ASCII characters
assert( utf8.size() > 3);
Run Code Online (Sandbox Code Playgroud)

这是g ++ 4.8.1的结果

const std::string utf8 = u8"åäö"; // or some other extended ASCII characters
assert( utf8.size() == 3);
Run Code Online (Sandbox Code Playgroud)
  • 源文件是ISO-8859(-1)
  • 我们使用这些编译器指令:-m64 -std = c ++ 11 -pthread -O3 -fpic

在我的世界中,无论源文件的编码如何,生成的utf8字符串都应该长于3.

或者,我是否完全误解了u8的语义,以及它所针对的用例?请赐教.

更新

如果我明确地告诉编译器源文件的编码是什么,正如许多建议的那样,我得到了u8文字的预期行为.但是,常规文字也会被编码为utf8

那是:

const std::string utf8 = u8"åäö"; // or some other extended ASCII characters
assert( utf8.size() > 3);
assert( utf8 == "åäö");
Run Code Online (Sandbox Code Playgroud)
  • 编译器指令:g ++ -m64 -std …

c++ c++11

14
推荐指数
2
解决办法
3673
查看次数

标签 统计

c++ ×1

c++11 ×1