为什么循环更改元素的范围不会?

时间:2014-08-10 16:45:18

标签: c++ for-loop

我使用此for循环将字符串中的所有字母更改为X.

string word{"banana"};
for (auto i : word) 
    i = 'x';//why does this bit fail?
cout << word;

输出应该是xxxxxx,而不是它的&#34; banana&#34;即使循环有效。

2 个答案:

答案 0 :(得分:2)

您需要使用&amp; i喜欢这样:

auto &i : word
在您的情况下,

i会存储原始元素的副本,因此您对其所做的任何更改都将丢失。

答案 1 :(得分:1)

评论试图告诉您,您的循环变量i已按值初始化,这意味着它是容器中值的副本,您只需修改副本。 / p>

如果您通过引用初始化,它将起作用。