将wstring转换为Unicode
C++ Convert wstring to Unicode
我想使用剩下的API,其中一个函数有一个这样的例子:
uri_builder builder(U("/test.php"));
builder.append_query(U("worker"), U("hello"));
我想用变量代替字符串字面值。现在我有一个std::wstring变量,我想使用,但我不知道如何使用它与U(无符号)前缀工作。
有什么建议吗?
我试过了
std::wstring name = L"the_name";
builder.append_query(U("worker"), U(the_name.c_str()));
我也试过
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> convert;
std::string uWorkerName = convert.to_bytes(the_name);
我最近一次尝试失败
std::u32string uWorkerName(workerName.begin(), workerName.end());
最后一个允许我使用API,但当数据到达我的php页面时,它显示垃圾数据,如随机数和大写字母。
你的尝试#3看起来最接近。试试这个:
std::wstring name = L"the_name";
std::string utf8str;
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> utf8_conv;
for (auto &ch : name) utf8str.append(utf8_conv.to_bytes(ch));
如果我没弄错的话,其余api文档都在这个url下:
https://microsoft.github.io/cpprestsdk/namespaceutility_1_1conversions.html 正如您在上面看到的,名称空间:utility::conversions
提供了各种应该对您有用的转换函数。例子:
std::string name = "the_name";
builder.append_query(U("worker"), utility::conversions::to_string_t(name));
如果您希望您的名称由wchar_t字符组成,那么上面的名称空间也包含utf16string
参数的重载。从这个站点:
您可以了解到utf16string
总是尝试成为两个字节字符的字符串。在windows下应该是typedef std::wstring utf16string;
,而在linux上可能是typedef std::u16string utf16string;
。
相关文章:
- 将ANSI C字符串转换为UNICODE
- 删除unicode def后,无法将QString转换为TCHAR
- 如何将整数转换为 unicode 字符
- 如何将小数NCR转换为Unicode字符(C )
- Ubuntu上的库ICU不想从Unicode转换为Windows-1251
- 如何在Unicode/UCS CodePoint和UTF16替代对之间转换
- Unicode 字符问题/转换参数
- 将ISO 8859-X转换为Unicode的方法
- 如何在Visual C 中的BSTR和32位Unicode字符串之间进行转换
- 在 unicode 中将 WCHAR 数组转换为 std::string?
- ANSI到Unicode或向后转换:怎么可能?
- 如何在Django中将unicode转换为C++std::string
- 将 Unicode 转换为字符
- 将Python 3 Unicode转换为std::string的干净方法
- Unicode转换问题
- 我可以使用什么winapi C函数调用来将unicode转换为ascii,反之亦然
- 从NFD到NFC的OSX和c++ unicode转换
- 在c++中使用Microsoft Access数据库进行Unicode转换
- visual studio - c++服务示例- Unicode转换
- 将C win32 api unicode转换为ascii