让我们看看我是否可以在没有太多事实错误的情况下解释这一点......
我正在写一个字符串类,我希望它能够使用 utf-8
(存储在std :: string中)作为内部存储。
我希望它能够兼顾“正常” std::string
和 std::wstring
作为输入和输出。
使用std :: wstring不是问题,我可以使用 std::codecvt_utf8<wchar_t>
要转换为和转换为std :: wstring。
然而,经过广泛的谷歌搜索和搜索SO我还没有找到一种方法来转换“正常/默认”C ++ std :: string(我假设在Windows中使用本地系统本地化?)和utf-8标准: :串。
我想一个选项是首先将std :: string转换为std :: wstring std::codecvt<wchar_t, char>
然后将其转换为如上所述的utf-8,但这看起来非常低效,因为如果我理解正确的话,至少char的前128个值应该直接转换为utf-8而不进行转换。
我发现了类似的问题: C ++:如何将ASCII或ANSI转换为UTF8并存储在std :: string中 虽然我对这个答案有点怀疑,因为它很难编码为拉丁语1,我希望这可以安全地使用所有类型的本地化。
没有答案涉及提升感谢,我不希望让我的代码库使用它的头痛。