C++ I';我试图将s1中的所有字符更改为';x';。但是,当我运行代码时,编译器只是打印出';世界你好';11次

C++ I';我试图将s1中的所有字符更改为';x';。但是,当我运行代码时,编译器只是打印出';世界你好';11次,c++,reference,C++,Reference,我是C++新手。我正在尝试将s1中的所有字符都更改为“x”。然而,当我运行代码时,编译器只打印了11次“hello world”。为什么会这样 int main(){ string s1 = "hello world"; for (auto &c : s1){ s1[c] = 'x'; cout << s1 << endl; } return 0; } intmain(){ 字符串s1=“你

我是C++新手。我正在尝试将s1中的所有字符都更改为“x”。然而,当我运行代码时,编译器只打印了11次“hello world”。为什么会这样

int main(){

    string s1 = "hello world";

    for (auto &c : s1){
        s1[c] = 'x';
        cout << s1 << endl;
    }


    return 0;
}
intmain(){
字符串s1=“你好世界”;
用于(自动和控制:s1){
s1[c]=‘x’;

cout在您使用的for循环中,c实际上包含字符串s1的不同字符,而不是s1中每个元素的索引

for (auto &c : s1)
要实际更改字符串的每个字符,请使用以下for循环:

for (int c = 0; c < s1.size(); ++c)
for(int c=0;c