从字符串修改char数组

时间:2017-04-20 19:05:57

标签: c++

我想初始化一个字符串然后修改结果char数组。我做了:

std::string str = "hello world";
const char* cstr = str.c_str();

// Modify contents of cstr

但是,因为cstr是const,所以我无法修改元素。如果我删除const,我就不能使用c_str()

实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

只需使用the std::string member functions修改str

这些功能包括operator[]

从C ++ 11开始(假设是兼容的实现),&str[0]是你想要的指针。

答案 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,就是为了让你的生活更轻松而为这个课程编写代码。