我有以下代码:
std::wstring my_string = L"foo";
std::wstring_convert<std::codecvt_utf8<wchar_t> > my_conv;
const char *chars = my_conv.to_bytes( my_string ).c_str();转换返回一个空指针(不是NULL,而是"")。
to_bytes是否返回临时指针?如何正确地编写这段代码?
发布于 2020-10-05 21:29:24
std::wstring_convert::to_bytes()不返回临时指针。它返回一个临时std::string对象。您正在保存一个指向临时数据的指针,然后该临时指针超出作用域,然后被销毁,留下一个指向无效内存的悬空指针。
保存std::string本身,而不是指向其数据的char*指针,例如:
std::wstring my_string = L"foo";
std::wstring_convert<std::codecvt_utf8<wchar_t> > my_conv;
std::string chars = my_conv.to_bytes( my_string );
// now use chars.c_str() when needed...https://stackoverflow.com/questions/64213736
复制相似问题