学习C++:字符串

一、字符串有三种形式

  1. 用双引号括起来的字符串常量, 如"CHINA" , "C++ program "
  2. 存放于字符数组中,以‘\0’字符(ASCII码为0)结尾
  3. string对象。string是C++标准模板库里的一个类,专门用于处理字符串( 略)

二、字符串常量

  1. 字符串常量占据内存的字节数等于字符串中字符数目加1, 多出来的是结尾字符‘\0’;
  2. 字符串 “C program” 在内存中的布局:学习C++:字符串
  3. 字符串的长度不包含’\0’;
  4. “” 也是合法的字符串常量,称为“空串”, 空串仍然会占据一个字节的存储空间,存放 ‘\0’。
  5. 如果字符串常量中包含双引号,则双引号应写为‘"’。而‘\’字符在 字符串中出现时,须连写两次,变成‘\’。
  6. 包含‘\0’字符的一维char数组,就是一个字符串。其中存放的字符串 即为 ‘\0’前面的字符组成;
  7. 用char数组存放字符串,数组元素个数应该至少为字符串长度+1;
  8. char数组的内容,可以在初始化时设定,也可以用C++库函数进行修改, 还可以用对数组元素赋值的办法任意改变其中的某个字符。
  9. 字符数组同样可以用cout、printf输出,用cin、scanf读入。用cin、 scanf将字符串读入字符数组时,会自动在字符数组中字符串的末尾加上 ‘\0’

三、字符串的输入
1、scanf()
用scanf可以将字符串读入字符数组
scanf会自动添加结尾的’\0’
scanf读入到空格为止
2、cin
cin.getline((char buf[], int bufSize);
/*读入一行(行长度不超过bufSize-1)或bufSize-1个字符到buf, 自动添加’\0’ 回车换行符不会写入buf,但是会从输入流中去掉 /
3、 gets(char buf[]);
/
读入一行,自动添加’\0’ 回车换行符不会写入buf,但是会从输入流中去掉。可能导致数组越界 */

四、字符串库函数
学习C++:字符串
库函数:
1)字符串拷贝函数:
strcpy(char dest [],char src [] ); //拷贝src到dest
2)字符串比较大小:
int strcmp(char s1 [],char s2 []); //返回0则相等
3)求字符串长度:
int strlen(char s[]);
4)字符串拼接:
strcat(char s1[],char s2[]); //s2拼接到s1后面
5)字符串转成大写:
strupr(char s[]);
6)字符串转成小写
strlwr(char s[]);
学习C++:字符串
学习C++:字符串