C++中的C风格字符串

C风格字符串是C++从C中继承下来的一种通用风格。它是以空字符null作为结束符的字符数组。 定义方式有多种: char ca1[] = {‘C', '+', '+', '/0'}; char ca2[] = "C++"; char *ca3 = "C++"; 注意:char ca[] = {'C', '+', '+'}不是C类型字符串,它只能算是一个普通的数组,它的结尾没有空字符。 C++中通常用(const)char* 类型的指针操作C风格字符串,遍历时可以利用结束符null。 C++中与C中string.h对应的cstring头文件定义了C风格字符串的一些标准库函数。如strlen(s)、strcmp(s1, s2)、strcat(s1, s2)、strcpy(s1, s2)、strncat(s1,s2,n)和strncpy(s1,s2,n)。对C风格字符串进行连接(strcat)复制(strcpy)操作时极容易出现数组溢出,可以考虑使用strn-版本的函数,但是也存在风险。 计算C风格字符串长度使用标准库函数strlen(),该函数计算长度时不考虑最后的空字符,所以str("C++")返回的值是3而不是4。 看下面的代码: const char *cp1 = "hello"; const char *cp2 = "abc"; char largeStr[10]; strncpy(largeStr, cp1, 6); strncat(largeStr, cp2, 4); str(cp1)的值是5,在向largeStr中复制的时候,需要把最后的空字符加进去,所以需要复制6个字符。之后的,再添加"abc"的时候,'a'字符会把之前字符串末尾的空字符覆盖掉,依次添加'b'和'c'后补加一个空字符。这样下来的话,最后的largeStr中的字符串是"helloabc",一共是5+3+1=9个字符(包括最后的空字符)。 ****对大部分的应用而言,使用标准库类型string,可以由标准库处理所有的内存管理问题,不比担心数组溢出。并且,除了增强安全性外,效率也提高了,因此应该尽量避免使用C风格字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值