在for循环外和在for循环内初始化字符串有什么区别?
我这里有两个代码是相同的,我在第一个代码中使用的唯一区别是在 for 循环内初始化的字符串,另一方面,我使用的是在 for 循环外初始化的字符串,但仍然得到不同的答案
在 for 循环内初始化的字符串:
#include <iostream>
#include <string>
using namespace std;
int main() {
for (int i = 0; i < 10; i++) {
string TheString = "******";
if (i < 3 || i > 6)
TheString+= " ";
else {
TheString += "aaaaa";
}
cout << TheString << endl;
}
return 0;
}
输出是这个形状:
******
******
******
******aaaaa
******aaaaa
******aaaaa
******aaaaa
******
******
******
在 for 循环外初始化的字符串:
#include <iostream>
#include <string>
using namespace std;
int main() {
string TheString = "******";
for (int i = 0; i < 10; i++) {
if (i < 3 || i > 6)
TheString+= " ";
else {
TheString += "aaaaa";
}
cout << TheString << endl;
}
return 0;
}
输出是这个形状:
******
******
******
****** aaaaa
****** aaaaaaaaaa
****** aaaaaaaaaaaaaaa
****** aaaaaaaaaaaaaaaaaaaa
****** aaaaaaaaaaaaaaaaaaaa
****** aaaaaaaaaaaaaaaaaaaa
****** aaaaaaaaaaaaaaaaaaaa
我真的对正在发生的事情感到困惑,并在此先感谢您。
回答
当您在循环内初始化字符串时,字符串在每次迭代中都会被初始化。
换句话说,该字符串"******"在每次迭代开始时设置为,然后添加一些内容。
另一方面,当您在循环外初始化字符串时,字符串仅在循环之前初始化一次。
换句话说,"******"在进入循环之前将字符串设置为一次,并且在第二次或以后的迭代中对新字符串进行字符串的添加。