我已经使用 cpprestsdk 工作了很长时间,直到今天还没有遇到这个问题。我不确定发生了什么变化,但是在调试了一段时间后,我对为什么会发生这种情况感到困惑。
将 utf-8 字符串转换为 wchar_t 以与其余调用一起使用时,我收到错误“UTF-8 字符串字符永远不能以 10xxxxxx 开头”抛出此错误的 cpp 文件显示在第 280 行:https://github.com/Microsoft/cpprestsdk/blob/master/Release/src/utilities/asyncrt_utils.cpp
我将代码复制到我的程序中,试图找出发生这种情况的原因,这就是我所拥有的: 注意:*tmp 是字符串向量的迭代器
`std::string str = *tmp->safe; //*tmp->safe == "WW-Department-Zone-OS"
const size_t sSize = str.size();
const char* const sData = str.data();
size_t result{ sSize };
for (size_t index = 0; index < sSize;) {
const char c{ sData[index++] };
if ((c & 0x40) == 0)
std::cout << "String starts with 10xxxxxx\n";
}`
使用断点时,我注意到当 'c' == '-' 字符及其后的字符为 -40 'Ø' 时会引发错误。如果有人对为什么会发生这种情况有任何意见,将不胜感激。