字符数组总结

来源:互联网 发布:12345网络举报平台 编辑:程序博客网 时间:2024/06/09 20:04

1.特征

以‘\0’(ASCII码即为0)结尾,否则不是字符串,因此字符串数组的大小应严格大于字符数目


2.输入及赋值

字符数组不能直接赋值,替代方法如下

  • 初始化时赋值:可以直接在赋值时使用字符串,例如:
    int main(){char a[100] = { "hello world" };cout << a;system("pause");return 0;}
  • cin>>:从可以读取的位置开始(因此cin留下的回车空格等不会影响下一个cin读取)读到空格,回车,tab停止,并把其留在输入序列(这可能导致下一个输入失效!)在后面加cin.ignore()或者cin.get();
  • cin.get():单参数(或为空)时读取单个字符,包括\n,但只能用来读取char,返回值为是否读取成功 
  •                 多参数:cin.get(char*s, streamsize n, char delim) 最后一个参数可省去,则默认为\n,但是,一旦写入delim,将不会在\n 停止,而char delim也会像回车一样保留在输入队列中
  • cin.getline(char*s, streamsize n, char delim):delim的规则同上,区别是getline会将delim从输入队列中删除
  • strcpy ( char * destination, const char * source );source可以为一个字符串,字符\0也会存入destination,函数返回值为destination

3.相关函数
  • 头文件:<cstring>
  • strlen(char*s),返回值为字符数组中第一个\0之前(不包括\0)的字符个数
  • strcpy,同上
  • strcmp(char*s1, char*s2),返回0表示两字符数组第一个\0之前每个字符相同,若有不同,>0表示s1中的值较大,<0表示s2中较大
  • strcat(char*s1, char*s2),返回s1的地址,从s1第一个\0开始将s2拼接到s1
  • strchr(char*s,  int character),返回第一个出现的character的地址,若换为角标需与s地址相减,返回值也可以作为第一个参数再次使用
  • strrchr,同上,找到的是最后一个

4.string
头文件<string>
可以直接赋值,也可以用string[ ]确定某一个字符