我有一个
const wchar_t* statusMsg = restResponse.reason_phrase().c_str();
我用两种方法打印它们。
std::wcout << "Status Msg : " << *statusMsg << *(statusMsg + 1) << std::endl;
std::wcout << "Status Msg : " << statusMsg;
实际输出应为OK
。第一个语句打印OK
,而第二个语句打印O
。这有什么不对?
此外,我在使用Casablanca Rest SDK时也有此代码。
答案 0 :(得分:2)
似乎问题是函数restResponse.reason_phrase()
返回类型为std::wstring
的临时对象。在这种情况下,在此语句之后,临时对象将被删除,指针statusMsg
将无效。
您应该定义一个类型为std::wstring
的对象,而不是指针,该对象将由函数的返回值初始化,并将成员函数c_str
应用于此对象。
否则程序有不确定的行为。