如何解决在 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
我对正在发生的事情感到非常困惑,在此先感谢您。
解决方法
当你在循环内部初始化字符串时,字符串在每次迭代中都会被初始化。
换句话说,字符串在每次迭代开始时设置为 "******"
,然后添加一些内容。
另一方面,当你在循环外初始化字符串时,字符串只在循环之前初始化一次。
换句话说,字符串在进入循环之前被设置为 "******"
一次,并且在第二次或以后的迭代中对新字符串进行字符串的添加。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。