2016-01-21 2 views
1

Я использую библиотеку 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); 
     } 
    } 

Спасибо!

+1

Пробовали ли вы пошаговый код, чтобы увидеть, где он выходит из строя? – NathanOliver

+0

@NathanOliver Привет, моя помощь по редактированию? он падает на обратной линии. Но я не знаю, что происходит за этим. – XTT

+0

Извлеките json-материал из этой функции и просто скопируйте строковый литерал, возможно, 'L" abc123 "и назначьте его' outputString'. Сбой функции? – PaulMcKenzie

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^