首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将std::string::c_str()深拷贝到char *

将std::string::c_str()深拷贝到char *
EN

Stack Overflow用户
提问于 2013-08-28 15:15:38
回答 2查看 11.4K关注 0票数 4

目前,我有一个复杂的函数,我和我们的团队不希望重构使用std::string,它需要一个char*,而char*是经过修改的。如何正确地将string::c_str()的深拷贝转换为char*?我是,而不是,希望修改字符串内部存储的char*。

代码语言:javascript
运行
复制
char *cstr = string.c_str();

失败,因为c_str()是const。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-28 15:21:01

你可以这样做:

代码语言:javascript
运行
复制
const std::string::size_type size = string.size();
char *buffer = new char[size + 1];   //we need extra char for NUL
memcpy(buffer, string.c_str(), size + 1);
票数 8
EN

Stack Overflow用户

发布于 2013-08-28 15:56:45

显而易见的解决办法是:

代码语言:javascript
运行
复制
std::vector<char> tmp( string.begin(), string.end() );
tmp.push_back( '\0' );
function( &tmp[0] );

(不过,我很喜欢曾傑瑞·科菲的解决方案。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18491883

复制
相关文章

相似问题

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