我目前有一个std::string
,它包含此
"\xa9 2006 FooWorld"
基本上它包含符号©。该字符串被传递给一个接收UTF-8的外部API的方法。我怎么能使这个字符串UTF-8兼容?有什么建议。我看过here我可以使用std::wstring_convert
,但我不确定如何在我的情况下应用它。任何建议,将不胜感激。
答案 0 :(得分:1)
这很简单:使用UTF-8字符串文字:
const char[]
这将导致{{1}}是一个正确编码的UTF-8字符串。
答案 1 :(得分:0)
在C ++ 11及更高版本中,获取UTF-8编码字符串文字的最佳方法是使用u8
前缀:
std:string str = u8"\u00A9 2006 FooWorld";
或:
std:string str = u8"© 2006 FooWorld";
但是,你也可以使用std::wstring_convert
(特别是如果输入数据不是字符串文字):
#include <codecvt>
#include <locale>
#include <string>
std::wstring wstr = L"© 2006 FooWorld"; // or whatever...
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> convert;
std::string str = convert.to_bytes(wstr);