string类是什么?
string类是由头文件string支持的,用于处理字符串的类
string类常用构造函数
1.string();//默认构造函数,建立一个长度为0的串
例:
string s1(s1为长度为0的串,可以用cin>>s1的方式将字符串(不含空格)存入s1,string的长度随着所存储的字符串的长度变化而变化,所以不用担心是否越界)
2.string(const char *s)
string s2="abc"或string s2("abc")来将字符串“abc”存入s2;
3.string(int size,char c)
创建一个包含n个元素的string对象,其中每个元素都被初始化为字符c
4.string(const string &str)
将一个string 对象初始化为string对象 str,相当于 string s=str
5.string(const char *p,int size)
char a[3]="ab";
string s(a,20);
将一个char类型的字符串的前X个字符拷贝到s里,如果X超出字符串长度,将拷贝垃圾值
6.string(begin,end)
string s(a+1,a+3)//将字符数组中第二个到第四个字符拷贝到s中去
这里如果要拷贝string类里的字符则要使用下列语句(假设有string类 a="dawga")
string s(&a[1],&a[3]),为什么要用&呢,因为对象的名称并不和字符串数组名称一样是一个地址
所以不能通过string s(a+1,a+3)来实现.
string类的输入
对于char类型有
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[100];
cin>>a;//遇到空格停止
cin.get(a,100);//直到读入100个字符后才停止,遇到空格换行等字符不会停止
cin.getline(a,100);//直到读入100个字符后才停止,或遇到换行停止
cin.getline(a,100,':');//直到读入100个字符后才停止,或遇到":"停止
}
这里cin.get和cin.getline 只能接受char类型的字符串
对于string类型有
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a;
cin>>a;//读入一个字符串,遇到空格停止
getline(cin,a);//读入一行字符串,遇到换行不停止
getline(cin,a,':');//读入一行字符串,遇到':'停止
}
string类的基本操作
s + t 将串s和串t连接成一个新串
s = t 用t更新s
s==t 判断s和t是否相等
s!=t 判断s和t是否不等
s<t 判断s是否小于t(字典序比较)
s[i]访问串中下标为i的字符