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

Why won't my range for loop change elements?

本文关键字:改变 元素 我的 循环 范围 为什么      更新时间:2023-10-16

我使用这个for循环将字符串中的所有字母更改为x

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

输出应该是xxxxxx,而不是"banana",即使循环工作。

你需要像这样使用&

auto &i : word

i在您的示例中存储了原始元素的副本,因此您对它所做的任何更改都将丢失。

注释试图告诉你的是,你的循环变量i是初始化意味着它的值在容器的副本,你只修改副本。

如果你通过引用初始化,它将工作