我手动将字符串中的字符分配给另一个字符串数组。但是为什么会导致长度为0,不能直接打印呢?虽然字符串中的字符可以通过迭代打印出来。
代码:
#include <iostream>
#include <string.h>
using namespace std;
int main() {
string domain[100],text="google";
for(int i=0;i<6;i++){
domain[0][i] = text[i];
}
for(int k=0;k<6;k++){
cout<<domain[0][k];
}
cout<<endl;
cout<<"String length: "<<domain[0].length()<<endl;
cout<<"Output string directly from array : "<<domain[0]<<endl;
return 0;
}
输出:
google
String length: 0
Output string directly from array :
最佳答案
通过写作
string domain[100]
您创建了一个包含 100 个空字符串的数组,然后您尝试使用 []
运算符访问字符串字符,但是该字符串没有字符,因此设置它们将不起作用。您甚至不应该尝试以这种方式访问它们。它会导致未定义的行为。
编辑。
在这一行中:
domain[0][i] = text[i];
您尝试设置第一个字符串的第 i 个字符。但是这个字符串有多少个字符呢?没有。
这就好像你尝试这样的事情一样:
domain[0] = "abc";
那么你可以访问domain[0][0]
但是不能访问domain[0][3]
因为它只有3个字符。试着把它想象成一个数组。如果数组只有 5 个元素,则不能设置第 10 个元素。
关于c++ - 为什么将字符分配给 C++ 字符串会导致字符串长度为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32477364/