C++ string常见操作总结:增删查改及与数字互转

目录

1.初始化

2.增

3.删

4.查

5.改

6.格式转换

划重点


string是C++ STL中常见的内置数据结构。不用再像C语言那样用char*,string更方便,不用再时刻关注字符串最后的空字符。

1.初始化

string s1 = "alibli"; // 初始化,除了最后的空字符外其他都拷贝到s1中
string s2 = s1;
string s3(s1);
string s4(6,'a'); // "aaaaaa"
string s5(s1, 3); // "bli"
string s6(s1, 3, 2);  // "bl"
string s7(s1.begin(), s1.end());

2.增

后面增一个字符串,最常用+=,也可用append()

string s1 = "ali";
s1 += "cli"; // 变为alibli
s1.append("123"); // 变为alibli123
s1.append("456", 2); // 只增2个字符,变为alibli12345
s1.append("789", 0, 2); // 从0开始2个,注意2是个数,变为alibli1234578

后面增一个字符,push_back()

string s1 = "ali";
s1.push_back('6'); // 变为ali6

中间插入字符串或字符

string s1("ali");
s1.insert(0, "love"); // loveali
s1.insert(0, 2, '0'); // 在指定位置插入2个'0' 00loveali
s1.insert(s1.begin(), 3, 'b'); // 迭代器指定位置插入3个'b' bbb00loveali

3.删

删最后一个字符用pop_back()

删中间几个字符用erase()

string s1("alibli");
s1.erase(3, 2); // 从s1[3]开始删除两个 alii
s1.erase(2);  // 从s1[2]开始删到末尾 al

清空用clear()

取子串用substr()

string s1("alibli");
string s2 = s1.substr(3, 2); // bl
string s3 = s1.substr(3); // bli

4.查

用find(),里面字符或字符串均可。

string s1("alibli");
cout << s1.find('b') << endl; // 不存在返回string::npos,-1,存在返回idx 3
cout << s1.find("bl") << endl; // 匹配查找字符串的位置 3
cout << s1.find("li", 3) << endl;  //从指定位置开始匹配 4
cout << s1.find_first_of('i') << endl; // 2
cout << s1.find_last_of("li") << endl; // 5
cout << s1.find_first_not_of("al") << endl; // 2
cout << s1.find_last_not_of("li") << endl; // 3

5.改

用replace()

string s1("alibli");
s1.replace(3, 2, "123"); // [3,5)替换为“123”,2个字符换为3个字符 ali123i
s1 = "alibli";
s1.replace(3, 2, "123", 2); // 2换2 ali12i
s1 = "alibli";
s1.replace(3, 2, "456", 1, 2);  // 2换2 ali56i

6.格式转换

转int用stoi()

转float用stof()

数字转string用to_string()

string s1("123");
cout << stoi(s1) << endl; // 转为整数
cout << stof(string("12.3")) << endl; // 转为浮点型
cout << to_string(124) << endl; // 数字转为字符串
cout << to_string(12.4) << endl;

划重点

注意一旦出现两个数字,一般第二个表示个数n个,并不是终止下标。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值