使用cpprestsdk在linux上编译wstring的问题



我有类似的代码

using namespace web;                
using namespace http;   
const http_response& response = /*valid assignment*/
http_headers::const_iterator it = response.headers().find(L"SomeKey");
if (it != response.headers().end())
{
//doing something
}

CCD_ 1具有有效数据。它是用windows编译的。我想用g++在Linux中编译相同的代码段。我该如何处理?我需要添加一些标志进行编译吗?我得到这样的错误:

error: no matching function for call to ‘web::http::http_headers::find(const wchar_t [17]) const’
http_headers::const_iterator it = response.headers().find(L"SomeKey");
 ^

该项目对windows使用wstring,对Linux使用string。他们提供了一个类型string_t和一个宏U来帮助处理这个问题,您的代码需要更改为在Windows和Linux上编译。

什么是实用程序:string_t和'U'宏?C++REST SDK使用取决于目标平台的不同字符串类型。对于Windows平台实用程序的示例::string_t是std::wstring使用UTF-16,在Linux上使用UTF-8的std::string。"U"宏可以是用于创建平台类型的字符串文字。如果您正在使用例如,导致与"U"宏发生冲突的库Boost.Iostreams可以通过定义宏来关闭它"_TURN_OFF_PLATFORM_STRING",然后再包括C++REST SDK头文件。

请参阅此常见问题

提示用法:

static const utility::string_t wl_birthday = U("wl.birthday");
static const utility::string_t wl_basic = U("wl.basic");

对于您的代码:

http_headers::const_iterator it = response.headers().find(U("SomeKey"));

警告此项目的状态:

cpprestsdk处于维护模式,我们不建议在新项目中使用它。我们将继续修复关键错误并解决安全问题。

相关内容

  • 没有找到相关文章

最新更新