我使用此for循环将字符串中的所有字母更改为X.
string word{"banana"};
for (auto i : word)
i = 'x';//why does this bit fail?
cout << word;
输出应该是xxxxxx,而不是它的&#34; banana&#34;即使循环有效。
答案 0 :(得分:2)
您需要使用&amp; i喜欢这样:
auto &i : word
在您的情况下, i
会存储原始元素的副本,因此您对其所做的任何更改都将丢失。
答案 1 :(得分:1)
评论试图告诉您,您的循环变量 如果您通过引用i
已按值初始化,这意味着它是容器中值的副本,您只需修改副本。 / p>