c++中字符串常见操作
1.字符串赋值
①用等号赋值
string str1 = "hello world";
str1 = "你好,世界";
str = 'h';
在定义字符串时,就可以直接对其进行赋值;后边还可以重新赋值,并且可以赋值单个字符,操作很灵活
string str1;
string str2 = "hello world";
str1 = str2;
还可以用另一个string类型的字符串直接赋值。
②用C语言风格的字符串进行赋值
const char * str1 = "hello world";
string str2(str1); //str2 = str1 也可以
③拷贝构造
string str1 = "hello world";
string str2(str1);
string库中的内置函数,就等于等号赋值。
④多个重复项构造
string str1(5,'a'); //结果为aaaaa
代表5个a,注意第二个参数必须是char类型,用单引号引着的单个字符。
⑤用函数进行赋值
string str1;
str1.assign("hello"); //str1 = "hello"
str1.assign("hello world",7); //第二个参数代表只要前五个,空格也占一个位置,str1 = "hello w"
string str2 = "abcdefg";
str1.assign(str2); //str1 = "abcdefg"
string str1;
str1.assign('w',5); //str1 = "wwwww" ,和上边的那个
注意:用函数赋值时,必须先定义变量,赋值操作不能写在同一行。
下边的这个就不行,是错误的
string str.assign("abf"); //错误写法
2.字符串拼接
①用+进行拼接
string str1 = "hello";
str1 += " world";// str1 = "hello world"
右边也可以用一个string类型进行拼接
string str1 = "hello";
string str2 = " world";
str1 += str2; // str1 = "hello world"
②用函数进行拼接
string str1 = "hello";
str1.append(" world"); //str1 = "hello world"
string str2 = "hello";
str2.append(" world",3); //str1 = "hello wo",参数3代表只要前3个
string str3 = "hello";
str3.append(" w orld",2,3); //str1 = "hello or",参数2代表从下标2开始,参数3代表要3个字符
3.字符串查找子串
string str1 = "abcdefdef";
str1.find("def"); //结果是3,从左往右找
str1.rfind("def"); //结果是6,从右往左找
str1.find("hhh"); //结果为-1,没有这个子串结果就是-1
注意:返回的值是子串中第一个字符在原串中的下标
4.字符串替换
string str1 = "abcdssw";
str1.replace(0,2,"1111"); //代表主串从0的位置开始,两个字符被替换掉;此处的结果为1111cdssw
就是把从哪里开始的,往后数几个的部分,替换成括号里边提供的
注意:这3个参数都不能少,如果只想把其中的一个字符换掉,就把第二个参数改为1.
5.字符串比较
主要用于看两个字符串是否相等
string str1 = "hello";
string str2 = "hello";
str1.compare(str2); //结果为0代表相等,否则为不相等
它的结果可能会大于0或小于0,这个结果的得出与ASCII有关
string str1 = "helpo";
string str2 = "hello";
str1.compare(str2); //结果不为0,为p-l,两个字符的ASCII值求差
6.字符串存取
string str1 = "hello world";
//①直接用下标的方式
str1[1]; //结果就为e
//②用内置函数
str1.at(1); //结果也为e
7.修改单个字符,只能修改单个字符
想要修改多个,可以用replace进行替换操作
string str1 = "hello world";
//①直接用下标的方式修改
str1[1] = 'x'; //结果就为"hxllo world"
//②用内置函数修改
str1.at(0) = 'k'; //结果为"kxllo world"
8.字符串的插入
string str1 = "hello";
str1.insert(1,"111"); //在1的位置插入,结果为"h111ello"
9.字符串的删除子串操作
string str1 = "hello world";
str1.erase(1,3); //从下标为1的位置起,删除长度为3的子串
//结果为"ho world"
此操作其实也可以直接把想删的地方用空字符替换,方法多样。
10.获取字符串子串
string str1 = "hello world";
str1.substr(1,3); //从下标为1的位置截取长度为3的子串
//结果为ell
以上这些操作可以相互替换,灵活性很强。