我正在编写此代码,用于使用循环将一个字符串内容存储到另一个字符串中。 (在下面的代码中)执行for循环后,字符串str1包含字符串str内容,但为什么str1.length()显示0(零)这是我无法弄清楚为什么?
string str;
str = "1234";
string str1;
for (int i = 0; i < str.length(); ++i) {
str1[i] = str[i];
}
cout << str1.length() << endl;
答案 0 :(得分:1)
您需要先调整新字符串str1
的大小。这是因为您正在访问字符串之外的内存区域(在某种程度上,您正在查找字符串不在哪里)。 resize
使字符串足够大以适合您的新字符串。
试试这个:
string str;
str = "1234";
string str1;
str1.resize(str.length()); // NEW LINE
for (int i = 0; i < str.length(); ++i) {
str1[i] = str[i];
}
cout << str1.length() << endl;
但如果您只想复制字符串,可以使用str1 = str