跳转至

字符数组

一、字符数组的说明

  1. 类似数组
char str[number];
char str[number][number];
  1. 初始化
char str[number] = {"hello"};
char str[number] = {'h','e','l','l','o'};
char str[number][number] = {"hello","world"}; 
  1. 注意:字符串后会默认加一个'\0',因此要为此预留一个位置

二、字符数组的输入输出

  1. cin对象输入方法
  2. 使用cin时,遇见空格自然结束
char a[20];
cin >> a;

输入pingtan fujian

输出结果 pingtan\0

  1. cin.getline遇见回车形成一个字符串
char a[20];
cin.getline(a,20);

输入pingtan fujian

输出结果 pingtan fujian\0

三、常见的字符数组处理函数

  1. 拷贝 strcpy(str1,str2)

  2. 作用:将后者覆盖前者

char str1[10],str2[]={"computer"};
strcpy(str1,str2);       //str1的内容变为"computer"
strcpy(str2,"program");      //str2的内容变为"program"
  1. 注意:

    • 被粘贴的字符长度要足够长
    • 前者只能是字符型数组,后者可以是字符型数组或字符串
  2. 连接 strcat(str1,str2)

  3. 作用:连接

char str1[10]={"pingtan"},str2[10]={"fujian"};
strcat(str1,str2);       //连接后的内容赋给前者
puts(str1);
  1. 注意

    • str1要足够长
    • 前者只能是字符型数组,后者可以是字符型数组或字符串
  2. 测试字符串的长度 strlen(str1)

  3. 作用:字符串长度

    int lenth;
    char str1[]={"China"};
    lenth = strlen(str1);
    cout << lenth;
    
  4. 注意:输出的长度里不包括\0

  5. 字符串的比较 strcmp(str1,str2)

  6. 作用:逐位比较每个字符的ASCII码

比较结果 strcmp的值
str1<str2 <0
str1==str2 ==0
srt1>str2 >=
  1. 查找 strchr(str1,ch)/strstr(str1,str2)

  2. strchr(str1,ch)

    1. 作用返回一个指针,指向str1中第一次出现字符ch的位置
  3. strstr(str1,str2)
    1. 作用返回一个指针,指向str1中第一次出现字符串str2的位置

四、string类

  1. 包含了上述所有操作(且更加方便、易于理解),并增加了更多
#include <iostream>
#include <string>

using namespace std;

int main ()
{
   string str1 = "runoob";      //定义对象,赋值
   string str2 = "google";
   string str3(10,'a');     //'a'字符重复十次
   string str3;
   int  len ;

   // 复制 str1 到 str3
   str3 = str1;
   cout << "str3 : " << str3 << endl;

   // 连接 str1 和 str2
   str3 = str1 + str2;
   cout << "str1 + str2 : " << str3 << endl;

   // 连接后,str3 的总长度
   len = str3.size();
   cout << "str3.size() :  " << len << endl;

    //字符交换
    str1.swap(str2);
    cout << s1 << s2;

    //字符串的修改
    s1.erase(index,len);        //从index开始擦除len长
    s1.insert(index,s2);        //在index插入s2
    s1,replace(index,len,s2);       //从index开始长度len替换为s2

    //字符提取子串
    s2 = s1.substr(6,5);

    //字符串分解
    char *token = strtok(str1,' ');

   return 0;
}