从字符串修改char数组
Modifying char array from string
我想初始化一个字符串,然后修改结果char数组。我做到了:
std::string str = "hello world";
const char* cstr = str.c_str();
// Modify contents of cstr
但是,由于CSTR是const,我无法修改元素。如果我删除const,则不能使用 c_str()
。
实现这一目标的最佳方法是什么?
只需使用std::string
成员函数修改str
。
这些功能包括operator[]
。
由于C 11(并假设实现了合规(,&str[0]
是您想要的指针。
做到这一点的最好,最直接的方法就是直接使用自己的operator[]
直接修改std::string
:
str[0] = 'G'; // "Gello world"
如果您真正需要复制C弦,无论出于何种原因,您都必须创建一个新的缓冲区,例如:
char* buffer = new char[str.length() + 1];
strcpy(buffer, str.c_str());
delete[] buffer;
这里明显的缺陷是动态分配。只需坚持直接修改std::string
,这就是班级写的,以使您的生活更轻松。