我将一个字符串中的字符手动分配给另一个字符串数组。但是,为什么它导致长度为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个元素。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句