UTF-8转换为字符

时间:2018-04-05 00:15:38

标签: c++ c++11 unicode

我目前有一个std::string,它包含此

"\xa9 2006 FooWorld"

基本上它包含符号©。该字符串被传递给一个接收UTF-8的外部API的方法。我怎么能使这个字符串UTF-8兼容?有什么建议。我看过here我可以使用std::wstring_convert,但我不确定如何在我的情况下应用它。任何建议,将不胜感激。

2 个答案:

答案 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);