没有合适的用户定义的从utility :: string_t到std :: string的转换

Kaj*_*Kaj 6 c++ string casablanca

我正在使用casablanca C++ Rest库来发出HTTP请求.

问题是这给了一个utility :: string_t字符串作为输出,我无法找到任何方法将其转换为经典的std :: string.有任何想法吗?

client.request(methods::GET).then([](http_response response)
{
  if(response.status_code() == status_codes::OK)
  {
    string_t s = response.extract_string().get();
  }
});
Run Code Online (Sandbox Code Playgroud)

ros*_*uma 11

根据您正在编译的平台,utility::string_t类型将被定义为std::wstring(在Windows上)或std::string(在Linux/OSX上).

std::string无论平台如何获得经典的utf-8 ,请看一下utility::conversions::to_utf8string.

参考文件


Shr*_*han 2

如果您从 github 查看 C++ REST SDK 的文档,您会发现typedef

C++ Rest SDK - 实用程序命名空间参考

typedef std::string     string_t;
Run Code Online (Sandbox Code Playgroud)

所以不需要转换它。两者都是同一类型。

  • 实用程序确实支持“utility::conversions::to_utf8string”等功能 (6认同)
  • 这仅适用于非 Windows。在 Windows 上,此 typedef 看起来像“typedef std::wstring string_t;” (5认同)