std::string test("this is a test string");
test[0] = 'b';
像上面的代码一样,部分字符串已被更改,编译器是否会生成新字符串或对旧字符串进行修改?
答案 0 :(得分:10)
test[0]
将返回非const(因为字符串对象是非const)引用第一个字符,该字符将成功替换为b
个字符。
查看reference。
答案 1 :(得分:4)
不,你正在修改旧的。如果您想要一个只读字符串对象,则需要 const
std::string const test("this is a test string");
test[0] = 'b'; // compile error.
答案 2 :(得分:2)
您将修改现有的string
。
答案 3 :(得分:2)
根据documentation,operator []将返回此索引处字符的引用。
如果字符串对象是const限定的,则该函数返回一个const char&amp ;.否则,它返回一个char&。
如果string是常量,你将无法修改它,否则你将能够更改原始字符串
答案 4 :(得分:1)
test
std::string
将成为“bhis是测试字符串”,因为您可以更改它。
用于构造字符串的字符串文字"this is a test string"
不会改变。
答案 5 :(得分:0)
string
的构造函数将复制字符数组。第二行将修改该副本。
答案 6 :(得分:0)
C ++ std
字符串是mutable
,它们是可更改的。在这种情况下,字符串将进行修改,而不是实例化新的字符串对象。