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

时间:2015-07-07 09:37:21

标签: 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();
  }
});

3 个答案:

答案 0 :(得分:10)

根据您要编译的平台,utility::string_t类型将为std::wstring(在Windows上)或std::string(在Linux / OSX上)的typedef' d。

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

reference documentation

答案 1 :(得分:3)

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

C++ Rest SDK - utility Namespace Reference

typedef std::string     string_t;

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

答案 2 :(得分:2)

在Windows Phone 8.1上有以下定义:

string_t toStringT = U("sample");
std::string fromStringT(toStringT.begin(), toStringT.end());

我用过这个:

std::string fromStringT(conversions::to_utf8string(toStringT));

或:

 struct A {
      A* next;
      char* txt;
    ...};
struct B {
      A* next;
      int length;
    ...};