原创 【博客大赛】《C++ Primer》学习笔记(十一)C-Style Character Strings

2016-3-16 12:08 1263 16 16 分类: MCU/ 嵌入式 文集: Qt和Cpp
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条评论)

登录后参与讨论
我要评论
0
16
关闭 站长推荐上一条 /2 下一条