字符数组
一、字符数组的说明
- 类似数组
- 初始化
char str[number] = {"hello"};
char str[number] = {'h','e','l','l','o'};
char str[number][number] = {"hello","world"};
- 注意:字符串后会默认加一个'\0',因此要为此预留一个位置
二、字符数组的输入输出
- cin对象输入方法
- 使用cin时,遇见空格自然结束
输入pingtan fujian
输出结果 pingtan\0
- cin.getline遇见回车形成一个字符串
输入pingtan fujian
输出结果 pingtan fujian\0
三、常见的字符数组处理函数
-
拷贝 strcpy(str1,str2)
-
作用:将后者覆盖前者
char str1[10],str2[]={"computer"};
strcpy(str1,str2); //str1的内容变为"computer"
strcpy(str2,"program"); //str2的内容变为"program"
-
注意:
- 被粘贴的字符长度要足够长
- 前者只能是字符型数组,后者可以是字符型数组或字符串
-
连接 strcat(str1,str2)
-
作用:连接
-
注意
- str1要足够长
- 前者只能是字符型数组,后者可以是字符型数组或字符串
-
测试字符串的长度 strlen(str1)
-
作用:字符串长度
-
注意:输出的长度里不包括\0
-
字符串的比较 strcmp(str1,str2)
-
作用:逐位比较每个字符的ASCII码
比较结果 | strcmp的值 |
---|---|
str1<str2 | <0 |
str1==str2 | ==0 |
srt1>str2 | >= |
-
查找 strchr(str1,ch)/strstr(str1,str2)
-
strchr(str1,ch)
- 作用返回一个指针,指向str1中第一次出现字符ch的位置
- strstr(str1,str2)
- 作用返回一个指针,指向str1中第一次出现字符串str2的位置
四、string类
- 包含了上述所有操作(且更加方便、易于理解),并增加了更多
#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;
}