Я использую библиотеку casablanca для сериализации значений json.C++, преобразование из утилиты: string_t в std :: string сбой при возврате
Я попытался сделать преобразование в std :: string, используя typedef std::wstring string_t
и this to convert from wstring to string. Он компилируется отлично, но программа просто сбой при выполнении обратной линии.
std::string getString()
{
web::json::value cvalue;
/* ----- code ----- */
typedef std::wstring string_t;
string_t outputString = cvalue.serialize();
typedef std::codecvt_utf8<wchar_t> convert_type;
std::wstring_convert<convert_type, wchar_t> converter;
std::string converted_str = converter.to_bytes(outputString);
return converted_str;
}
Не могу понять, почему это сбой. Ниже приведена линия, вызывающая эту функцию.
std::string s = getString();
Программа вызвала точку останова здесь в строке free(_Ptr)
в файле с именем Xdebug. Я не совсем понимаю, что здесь говорится. Надеюсь, это поможет вам прояснить ситуацию.
template<class _Ty>
void __CLRCALL_OR_CDECL _DebugHeapDelete(_Ty *_Ptr)
{ // delete from the debug CRT heap even if operator delete exists
if (_Ptr != 0)
{ // worth deleting
_Ptr->~_Ty();
// delete as _NORMAL_BLOCK, not _CRT_BLOCK, since we might have
// facets allocated by normal new.
free(_Ptr);
}
}
Спасибо!
Пробовали ли вы пошаговый код, чтобы увидеть, где он выходит из строя? – NathanOliver
@NathanOliver Привет, моя помощь по редактированию? он падает на обратной линии. Но я не знаю, что происходит за этим. – XTT
Извлеките json-материал из этой функции и просто скопируйте строковый литерал, возможно, 'L" abc123 "и назначьте его' outputString'. Сбой функции? – PaulMcKenzie