我有类似的代码
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处于维护模式,我们不建议在新项目中使用它。我们将继续修复关键错误并解决安全问题。