将std :: string :: c_str()深层复制到char*

Nic*_*her 2 c++ string

目前我有一个复杂的功能,我和我们的团队不想重构使用std :: string,它需要修改一个char*.我如何正确地将string :: c_str()的深层复制到char*中?我打算修改字符串的内部存储的char*.

char *cstr = string.c_str();
Run Code Online (Sandbox Code Playgroud)

因为c_str()是const而失败.

Mic*_*iak 8

你可以这样做:

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);
Run Code Online (Sandbox Code Playgroud)

  • *请*请使用正确的字符串大小,例如.`std :: string :: size_type`或`std :: size_t`. (6认同)