首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串转换为char *失败(codecvt)

将字符串转换为char *失败(codecvt)
EN

Stack Overflow用户
提问于 2020-10-05 17:50:49
回答 1查看 43关注 0票数 0

我有以下代码:

代码语言:javascript
复制
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是否返回临时指针?如何正确地编写这段代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-05 21:29:24

std::wstring_convert::to_bytes()不返回临时指针。它返回一个临时std::string对象。您正在保存一个指向临时数据的指针,然后该临时指针超出作用域,然后被销毁,留下一个指向无效内存的悬空指针

保存std::string本身,而不是指向其数据的char*指针,例如:

代码语言:javascript
复制
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...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64213736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档