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

以上这些操作可以相互替换,灵活性很强。

  • 12
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值