C字符数组与string对象的区别

在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类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值