用字符数组存放字符串容易发生数组越界的错误,而且往往难以察觉。因此,C++ 标准模板库设计了 string 数据类型,专门用于字符串处理。
string 类型的变量就是用来存放字符串的,也叫“string对象”。string 并不是 C++ 的基本数据类型,它是 C++ 标准模板库中的一个“类”。关于这一点,现在不必深究,以后会学到。这里只要学会如何使用 string 对象即可。 要使用 string 对象,必须包含头文件 <string>。
char数组:存储单字符 int数组:存储整型
cpp
char a[7]={'a','2','A','#','&',' '};
字符数组元素都是单个字符
cpp
char a[5]=“hello";
错误的表现形式 存储字符串的时候,数组长度要给字符串结尾’\0’留一个长度防止越界。
cpp
char a[6]=“hello";
char a[6]={“hello"};
char a[6]={'h','e','l','l','o','\0'};
循环遍历将元素依次输入
cpp
char a[101];
int n;
cin>>n
for(int i=1; i<=n; i++) cin>>a[i];
cpp
char a[101];
cin>>a;
cin.getline(数组名,数组长度)
cpp
cin.getline(a,101);
gets(数组名); 头文件#include <cstdio> 注意连用cin和cin.getline()函数时,需要在中间加一个cin.ignore(); 用于清除缓存。
循环遍历将元素依次输出
cpp
for(int i=0;i>n;i++) cout>>a[i];
直接输出:
cout>>a
头文件:#include <cstring> 获取数组有效长度:strlen(数组名),strlen(a), strlen(“hello”);
strcat(a,b)
strcpy(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
char a[6]=”hello”; cout<<strrev(a);
头文件: #include <cstype> isalnum(); 验证字母和数字 isalpha(); 验证字母 isdigit(); 验证数字 islower(); 验证小写 isupper(); 验证大写 tolower(); 转换为小写 toupper(); 转换为大写
“” 0个或多个字符
string a;
string a=”abc”;
cin>>a
使用for循环依次输入
getline(cin,a);
cout<<a
使用for循环依次输出
头文件:#include <string> length()函数
a.length();
连用cin和getline()函数时,需要在中间加一个cin.ignore();用于清除缓存。
头文件:#include <string>
cpp
string a,b;
a=a+b;cout<<a;
cpp
string a,b;
cin>>a;
b=a;cout<<b;
a>=b —-> 真或者假 a==b —-> 真或者假 a<=b —-> 真或者假 a!=b —-> 真或者假
cpp
str.find("ab");
//返回字符串ab在str的位置
cpp
str.substr(3);
//返回[3]及以后的子串
str.substr(2,4);
//返回str[2]~str[2+(4-1)] 子串(即从[2]开始4个字符组成的字符串
cpp
str.replace(2, 4, "sz");
//返回把[2]~[2+(4-1)]的内容替换为“sz”后的新字符串
.str.replace(2, 4, "abcd", 3)
//返回把[2]~[2+(4-1)]的内容替换为“abcd”前3个字符后的新字符串
cpp
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)]个字符,并返回形成的新字符串