2016-01-21 246 views
1

我正在使用casablanca庫來序列化json值。C++,實用程序轉換:string_t轉換爲std :: string返回

我嘗試使用typedef std::wstring string_tthis to convert from wstring to string轉換爲std :: 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(); 

該計劃引發了一個名爲Xdebug的文件一個破發點,在這裏行free(_Ptr)。我真的不明白這裏說的是什麼。希望這有助於爲你澄清事物。

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

回答