在使用处理C风格字符串的标准库函数时,牢记字符串必须以结束符null结束。
char ca[] = { 'C' ,'+' , '+' }; cout << strlen(ca) <<endl; //ca中没有null结束符,计算结果不可预料
对没有null结束符的字符数组,则strlen计算的结果不可预料。
标准库函数strlen总是假定其参数字符串以null字符结束,当调用该标准库函数,系统将会从实参指向的内存空间开始一直搜索结束符,直到恰好遇到null为止。strlen返回这一段内存空间中总共有多少个字符,无论如何这个数值不可能时正确的。
传递给标准库函数strcat ,strcpy的第一个实参数组必须具有足够大的空间存放新生成的字符串。
如果第二个字符串大小发生变化,程序容易出错,导致严重的安全漏洞。
如果必须使用C风格字符串,则使用标准库函数strncat 和strncpy比strcat和 strcpy函数更安全。
在复制和串连字符串时,一定要时刻记住算上结束符null,在定义字符串时要切记预留存放null字符的空间。
标准库函数strlen用于计算C风格字符串中的字符个数,不包括null结束符。
如果使用C++标准库类型string,则不存在数组溢出和截短字符串,标准库则处理所有的内存管理问题。不必担心每次修改字符串时设计到的大小问题。除增强安全性外,效率也提高了。