长度()在C 中显示0(尽管字符串中存储在其中)

length() is showing 0 in c++ (although string has a content stored in it)

本文关键字:字符串 在其中 存储 显示 长度      更新时间:2023-10-16

我正在编写此代码,用于使用循环将一个字符串内容存储到另一个字符串中。(在以下代码中)执行for循环后,字符串str1包含字符串str content,但是为什么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;

您需要首先调整新的字符串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

相关文章: