标准中是否有任何规则违反了对由 operator[]
返回的内部 std::string
缓冲区进行修改的更改,例如:
void foo(char* buf)
{
buf[1] = 's';
}
std::string str = "str";
modify_buffer(&str[0]);
我在 C++11 草案中找到了有关
data
和 c_str
函数的以下引用:
但是我没有看到与要求:程序不得更改存储在字符数组中的任何值。
operator[]
相关的内容。
std::string
。 - ascheplerdata()
和c_str()
返回的是const char*
,所以会产生这样的结果。 - DimChtzoperator[]
修改内容,那么为什么认为指向元素的指针会有任何不同呢? - NathanOliver