我想初始化一个字符串然后修改结果char数组。我做了:
std::string str = "hello world";
const char* cstr = str.c_str();
// Modify contents of cstr
但是,因为cstr是const,所以我无法修改元素。如果我删除const,我就不能使用c_str()
。
实现这一目标的最佳方法是什么?
答案 0 :(得分:4)
答案 1 :(得分:0)
执行此操作的最佳和最直接的方法是直接使用自己的std::string
修改operator[]
:
str[0] = 'G'; // "Gello world"
如果您真的需要复制C字符串,无论出于何种原因,那么您必须创建一个新的缓冲区,例如:
char* buffer = new char[str.length() + 1];
strcpy(buffer, str.c_str());
delete[] buffer;
这里明显的缺陷是动态分配。只需坚持直接修改std::string
,就是为了让你的生活更轻松而为这个课程编写代码。