嗨im歡呼的一些建議 im工作在類的命令解釋器,我有這個「命令」(這是一個類),從內部變量獲取一些c字符串,並使std :: wstring ,然後我投它爲wchar_t *但是當我回到我得到它的變量只是垃圾,回來之前PEwchar_t *奇怪的行爲
內容變量:
comandos disponibles:ayuda salir
內容返回後的變量:
我試圖讓函數返回一個常量wchar_t *但它也不工作,但如果我把一個字符串放在返回它只是工作罰款PE。
return L"test"
有什麼想法嗎?
- 編輯 -
這是使用
wchar_t * ayuda::run(std::list<char* const> * lista){
std::wstring out;
out += L"comandos disponibles:\n"; //static header
commandMap map = loadMap();//get a map whit all the function names
commandMap::iterator it;
for(it = map.begin(); it != map.end();it++){
out+=std::wstring(it->first.begin(),it->first.end())+L"\n";// append the command name to the string
}
wchar_t * _out = const_cast<wchar_t*>(out.c_str()); //cast to wchar *
return _out;
}
首先,不要施放它。 .c_str()是你的朋友。 – WhozCraig
我已經在使用它,請參閱更新 –
您正在返回引用'out.c_str'的'_out',但'out'將會超出範圍並且它的析構函數會被調用,所以'_out'不再有意義。 – oldrinb