C++字符串详解

2022-11-11 19:58:51 浏览数 (1)

用字符数组存放字符串容易发生数组越界的错误,而且往往难以察觉。因此,C 标准模板库设计了 string 数据类型,专门用于字符串处理。

string 类型的变量就是用来存放字符串的,也叫“string对象”。string 并不是 C 的基本数据类型,它是 C 标准模板库中的一个“类”。关于这一点,现在不必深究,以后会学到。这里只要学会如何使用 string 对象即可。 要使用 string 对象,必须包含头文件 <string>。

char数组:存储单字符 int数组:存储整型

字符型数组

cpp

代码语言:javascript复制
char a[7]={'a','2','A','#','&',' '};

字符数组元素都是单个字符

字符串

cpp

代码语言:javascript复制
char a[5]=“hello";

错误的表现形式 存储字符串的时候,数组长度要给字符串结尾’’留一个长度防止越界。

cpp

代码语言:javascript复制
char a[6]=“hello";
char a[6]={“hello"};
char a[6]={'h','e','l','l','o',''};

字符数组的输入

输入

循环遍历将元素依次输入

cpp

代码语言:javascript复制
char a[101];
int n;
cin>>n
for(int i=1; i<=n; i  ) cin>>a[i];

直接输入

cpp

代码语言:javascript复制
char a[101];
cin>>a;

带空格的输入

cin.getline(数组名,数组长度)

cpp

代码语言:javascript复制
cin.getline(a,101);

gets(数组名); 头文件#include <cstdio> 注意连用cin和cin.getline()函数时,需要在中间加一个cin.ignore(); 用于清除缓存。

输出

循环遍历将元素依次输出

cpp

代码语言:javascript复制
for(int i=0;i>n;i  ) cout>>a[i];

直接输出:

cout>>a

字符数组常用函数

头文件:#include <cstring> 获取数组有效长度:strlen(数组名),strlen(a), strlen(“hello”);

  1. 将b字符数组拼接到a字符数组后

strcat(a,b)

  1. 将b字符数组复制给字符数组

strcpy(a,b)

  1. 比较a字符数组和b字符数组的大小

strcmp(a,b)

char a[4]=”abc”; char a[3]=”ad”; 对位比较大小, ASCII码大的该位大。 if(strcmp(a,b)>0) — a>b if(strcmp(a,b)==0) — a=b if(strcmp(a,b)<0) — a<b

  1. 反转函数

char a[6]=”hello”; cout<<strrev(a);

  1. 额外的函数

头文件: #include <cstype> isalnum(); 验证字母和数字 isalpha(); 验证字母 isdigit(); 验证数字 islower(); 验证小写 isupper(); 验证大写 tolower(); 转换为小写 toupper(); 转换为大写

string类型字符串

“” 0个或多个字符

声明

string a;

初始化

string a=”abc”;

不带空格输入

cin>>a

使用for循环依次输入

带空格输入

getline(cin,a);

输出

cout<<a

使用for循环依次输出

获取字符串长度函数

头文件:#include <string> length()函数

a.length();

连用cin和getline()函数时,需要在中间加一个cin.ignore();用于清除缓存。

string常用函数

头文件:#include <string>

字符串的拼接

cpp

代码语言:javascript复制
string a,b;
a=a b;cout<<a;

字符串的赋值

cpp

代码语言:javascript复制
string a,b;
cin>>a;
b=a;cout<<b;

比较大小

a>=b —-> 真或者假 a==b —-> 真或者假 a<=b —-> 真或者假 a!=b —-> 真或者假

查找

cpp

代码语言:javascript复制
str.find("ab");
//返回字符串ab在str的位置

子串

cpp

代码语言:javascript复制
str.substr(3);
//返回[3]及以后的子串

str.substr(2,4);
//返回str[2]~str[2 (4-1)] 子串(即从[2]开始4个字符组成的字符串

替换

cpp

代码语言:javascript复制
str.replace(2, 4, "sz");
//返回把[2]~[2 (4-1)]的内容替换为“sz”后的新字符串

.str.replace(2, 4, "abcd", 3)
//返回把[2]~[2 (4-1)]的内容替换为“abcd”前3个字符后的新字符串

插入

cpp

代码语言:javascript复制
str.insert(2, "sz");
//从[2]位置开始添加字符串“sz”,并返回形成的新字符串

.str.insert(2, "abcd", 3)
//从[2]开始添加字符串“abcd”前3个字符,并返回形成的新字符串

.str.insert(2, "abcd", 1, 3)
//从[2]开始添加字符串“abcd”前[2]~[2 (3-1)]个字符,并返回形成的新字符串

0 人点赞