Cpp_Primer_Answers icon indicating copy to clipboard operation
Cpp_Primer_Answers copied to clipboard

练习3.7 为什么我用你上传的代码把循环控制变量类型换成char,字符还是能被换成X

Open Delta0406 opened this issue 5 years ago • 3 comments

g++ -m64

Delta0406 avatar Feb 17 '20 07:02 Delta0406

g++ -m64

代码里面就是char啊, 难道我看错了 for (char x : s) { x = 'X'; }

bingoabs avatar Apr 16 '20 06:04 bingoabs

如果写成 char &x : s 那就还会被换成X,把&去掉就不会

the-1000th-summer avatar May 16 '20 06:05 the-1000th-summer

如果将 auto 换成 char,代码将会出现编译错误。

在这段代码中,str 是一个 std::string 对象,auto 关键字用于自动推断迭代器的类型。在这种情况下,auto &c 推断为 char& 类型,因为 str 是一个字符串,其中的每个元素都是字符。

如果将 auto 替换为 char,则会将 c 声明为一个新的变量,而不是迭代器。然后,编译器会尝试将 char 类型的变量赋值给 char& 类型的元素,导致编译错误。

正确的代码应该保持 auto,以便正确地迭代字符串中的每个字符并进行修改。

我想你是使用了

char &c

而不是

char c

这个issue是2020的,但是希望能够帮助到其他人吧!

KaibutsuSama avatar Jun 01 '23 02:06 KaibutsuSama