如何在C+中初始化常量char*和/或常量std::string+;使用UTF-8字符序列? 如何初始化C++中的conchchar和/或const STD::string,使用UTF-8字符序列?

如何在C+中初始化常量char*和/或常量std::string+;使用UTF-8字符序列? 如何初始化C++中的conchchar和/或const STD::string,使用UTF-8字符序列?,c++,utf-8,C++,Utf 8,我正在使用一个正则表达式API,它接受UTF8字符串作为const char*。初始化代码应独立于平台。这应适用于任何编译器: const char* twochars = "\xe6\x97\xa5\xd1\x88"; 与编译器无关的答案也是: 以UTF-8格式保存文件,不使用BOM签名编码 const char* c = "ěščř"; //Just save the file in UTF-8 without BOM signature. (见问题的评论。) 顺便说一句,Windows

我正在使用一个正则表达式API,它接受UTF8字符串作为const char*。初始化代码应独立于平台。

这应适用于任何编译器:

const char* twochars = "\xe6\x97\xa5\xd1\x88";

与编译器无关的答案也是: 以UTF-8格式保存文件,不使用BOM签名编码

const char* c = "ěščř"; //Just save the file in UTF-8 without BOM signature.
(见问题的评论。)

顺便说一句,Windows控制台必须设置为UTF8。有关许多详细信息,请参阅。

可用选项取决于您正在使用的编译器<代码>常量字符*c=“ěěč”。只需将文件保存为UTF-8编码。选项还取决于UTF-8字符串在源代码中的可读性。是运行时提供的任意字符串,还是编译时已知的字符串?如果是前者,如何提供?作为特例,如果是后者,并且字符串仅包含ascii(7bit)字符,则UTF-8与这些字符的ascii相同,因此只需使用字符串文字即可<代码>常量字符*utf8\u string=“你好,世界”。当然,假设您的平台使用ascii作为基本编码,这应该是目前推荐的做法。明确所有源代码都是UTF-8,没有BOM表,没有例外,所有文件都使用UTF-8,然后按照C/C++标准方式初始化常量字符串。