在C++有string类前,C字符数组长用于字符串操作,C语言库提供了函数来完成各种操作。string对象的出现,使得字符串操作更为简便。
声明初始化的不同
字符数组若声明时不初始化则必须给定其长度;
string类不受限制,因为其长度会根据给定内容自动调整;
char charr1[10]; //正确
char charr1[] = “great”; //正确
char charr1[]; //错误,未指定长度
string str1; // 正确
string str1 = " very good!"; //正确
常见用法比较
char charr1[20];
char charr2[20] = “shanxi”;
string str1;
string str2 = “shaoan”;
1、赋值功能
str1 = str2;
strcpy(charr1, charr2);
2、字符串连接
str1 += " great";
strcat(charr1, “good”);
3、求长度
int len1 = str1.size();
int len2 = strlen(charr1);
另外,对于未被初始化的字符数组,其长度不一定等于给定的长度。因为函数 strlen() 是从数组第一个元素开始计算直到遇到空字符。对于未初始化的数据,第一个空字符的出现是随机的。
注意:
由于字符数组其空间大小是固定的,在执行strcat与strcpy函数存在越界的可能性,因此又出现了 strncat() 与 strncpy() 函数,他们增加了一个最大接收长度的参数,从而使代码更安全可靠。
4、行读取方法
cin.getline(harr, 20); //读取到字符数组
getline(cin, str); //读取到string类