原创
【博客大赛】《C++ Primer》学习笔记(十一)C-Style Character Strings
C++语言支持C风格的字符串。
但是我们不应该使用C风格的字符串,因为它们难用,而且bug很多。
C风格的字符串以'\0'结尾,它并不是一种类型,而是一种表达。比如:
“Hello World.”
"Nice to meet you."
对C风格字符串的操作函数放置在cstring头文件中。它们有:
strlen() //获取字符串长度,不包含结尾的'\0'
strcmp(p1, p2) //比较两个字符串的大小,如果完全一样则返回0,否则返回正值或负值
strcat(p1, p2) //将p2附加在p1后面
strcpy(p1, p2) //将p2复制给p1
它们不会检查参数是否合法,我们必须保证参数是具备'\0'结尾的字符串。
char ca[] = {'1', '2', '3', '4', '5', '6', '7'};
cout << strlen(ca) << endl; //错误
上面这段代码的输出结果是不确定的。
另外,使用string类进行大小比较,结果是字符串里面的元素的位置及大小;
而使用char *的字符串进行大小比较,结果是字符串指针的地址大小(可以使用strcmp函数)。
使用这些函数的时候,要注意目标字符串的大小足够,否则会产生越界的问题。
这只能由程序员保证,函数不会做任何检查。
所以结论是,不要使用C风格的字符串!!!
使用string类!使用string类!使用string类!
同理,不要使用Array和指针,而使用Vector及迭代器。
文章评论(0条评论)
登录后参与讨论