目前,我有一个复杂的函数,我和我们的团队不希望重构使用std::string,它需要一个char*,而char*是经过修改的。如何正确地将string::c_str()的深拷贝转换为char*?我是,而不是,希望修改字符串内部存储的char*。
char *cstr = string.c_str();失败,因为c_str()是const。
发布于 2013-08-28 15:21:01
你可以这样做:
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);发布于 2013-08-28 15:56:45
显而易见的解决办法是:
std::vector<char> tmp( string.begin(), string.end() );
tmp.push_back( '\0' );
function( &tmp[0] );(不过,我很喜欢曾傑瑞·科菲的解决方案。)
https://stackoverflow.com/questions/18491883
复制相似问题