我的平台是Mac和C++ 11(或更高版本).我是一名C++初学者,正在处理一个处理中文和英文的个人项目.UTF-8是此项目的首选编码.
我在Stack Overflow上阅读了一些帖子,其中许多人建议std::string在处理UTF-8时使用,并避免wchar_t因为char8_tUTF-8现在没有.
然而,他们没有谈论如何正确地与像函数处理str[i],std::string::size(),std::string::find_first_of()或者std::regex因为这些功能通常面临UTF-8时,返回意外的结果.
我应该继续std::string或切换到std::wstring?如果我应该std::string坚持下去,那么处理上述问题的最佳做法是什么?
来自维基百科:
为了在C++编译器中增强对Unicode的支持,char类型的定义已被修改为至少为存储UTF-8的8位编码所需的大小.
我想知道这对于编写便携式应用程序究竟意味着什么.写这个有什么区别吗?
const char[] str = "Test String";
Run Code Online (Sandbox Code Playgroud)
或这个?
const char[] str = u8"Test String";
Run Code Online (Sandbox Code Playgroud)
是否有任何理由不在代码中的每个字符串文字中使用后者?
当TestString中有非ASCII字符时会发生什么?
在c ++ 17中引入,std::filesystem::u8path似乎在c ++ 20中被弃用了.
这个选择的原因是什么?我应该在c ++ 17中使用什么?我应该在c ++ 20中使用什么?
我想找到关于 std::string 的默认编码格式。
我试图找出编码格式,但我不知道。c++ 中的 std::string 有编码格式吗?