C++篇:第九章_字符串_知识点大全
C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器
九、字符串
-
可以用[ ]进行下标访问
-
使用string类需将
头文件包含在程序中,不能写成string.h;对于头文件cstring提供C语言对字符串处理的有关函数,而头文件string提供C++对字符串处理的新功能 -
字符串对象不需要NULL字符结尾
-
string对象允许用“+”或“+=”实现两个字符串连接操作;可以使用关系运算符比大小
-
不可以用关系运算符对字符数组中的字符串进行比较,但string对象可以
-
‘\0’是 c/c++ 语言中的字符串结束符
-
字符串可以整体输入、输出
-
字符串常量不可改,例:“word”
-
sizeof(a)是指a的内存空间大小(包括最后的\0),strlen() 查找到“\0”就结束(故不包括最后的\0),但sizeof返回的是真个字符串包含'\0'在内占用的字节数
-
字符串中的字符依次存储在内存中一块连续的区域内,并且把空字符 ' \0' 自动附加到字符串的尾部作为字符串的结束标志。故字符个数为 n 的字符串在内存中应占( n+1 )个字节
-
不同的零所代表的意思:
① ‘0’代表字符0,对应ASCII码值为0x30(也就是十进制48)
② '\0'代表空字符(转义字符)【输出为空】,对应ASCII码值为0x00(也就是十进制 0), 用作字符串结束符,但并不是字符串的一部分
③ 0 代表数字0,若把 数字0 赋值给 某个字符,对应ASCII码值为0x00(也就是十进制)
④ “0”代表一个字符串,字符串中含有 2个字符,分别是 '0' 和 '\0'
-
strlen()、sizeof()是针对字符的,而length()(C的)、size()(C++的)是针对字符串的
-
‘\’不是字符,只有字符'\'
-
字符串的结束字符为‘\0’,故算字符串长度的题时要注意
-
C++允许在字符串上进行整体操作
-
不管这个字符变量中有多少个字符,在Visual C++所有字符串变量的长度都是16字节
-
字符串函数:
① strcpy() :函数将源字符串复制到缓冲区。没有指定要复制字符的具体数目!如果源字符串碰巧来自用户输入,且没有专门限制其大小,则有可能会造成缓冲区溢出!
② strcat() :函数非常类似于 strcpy(),它可以将一个字符串合并到缓冲区末尾。
③ sprintf()、vsprintf() : 用来格式化文本和将其存入缓冲区的通用函数
- strcmp():比较两个string长度;strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数
④ strncat():char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。与strcat函数类似,但可以检测第一个数组是否能够容纳第二个字符串
⑤ C++里没有对应的split()函数