我们之前有些代码积极拥抱新标准,用了 u8"..." 来强调字符串是 UTF-8 编码(其实源代码也是 UTF-8,加个 u8 只是为了强调)
结果 C++20 把 u8"..." 的类型从 const char[] 改成 const char8_t[],而且 const char8_t* 还不能隐式转为 const char*,一堆地方要改,一种吃了屎的感觉
如果说标准建议凡是 Unicode 字符串都用 char8_t/char16_t/char32_t,想要 deprecate 掉 char/wchar_t,那也行,我都能接受这种阵痛。但尼玛他们又不把支持搞全,std::locale 不支持也就算了,连 C++20 才新增的 std::format 也只有 char/wchar_t 的版本,没有 char8_t/char16_t/char32_t 的版本,真是不知道他们想给我们什么导向。
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 个人觉得 win msvc 的做法是不对的。c++11 的标准引入 u8, u 这些做法也是自讨苦吃。
: 我的做法是所有的源代码都要求是 utf-8,直接用 "" 普通字符串表达式,在 windows 底下,要求 msvc 使用 utf-8 编码:
: add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
: ...................
--
FROM 183.60.88.*