C++字符串的处理

目录

  • 字符串初始化
  • 字符串函数
    • 字符串大小,是否为空
    • 拼接
    • 插入
    • 找到子串位置
    • 字符串的遍历
  • 字符串的替换

字符串初始化

  • 这是头文件
#include <iostream>
using namespace std;
string s;
// 空串长度为0
cout << s.size() << endl;

string s1 = "string";

string s2("string");

// s3 内容为 666666
string s3(6, '6');

// 拷贝的是内容
string s4 = s3;
s4[0] = '5';
// 输出仍然是 666666
cout << s3 << endl;
// 输出是 566666
cout << s4 << endl;

字符串的相关函数

  • 字符串大小,判空
string s = "string ";
// 字符串大小
s.size();
// 是否为空
bool b = s.empty();
  • 字符串拼接的几种方式
string s = "string ";

string s1 = "this is a " + s;

s1 += s;

s1.append(s);

// 后面追加10个字符'a'
s1.append(10, 'a');
  • 插入
s.insert(0, "aaa");
  • 寻找子串位置
unsigned long index = s.find('s');

index = s.find("str");
  • 遍历
for (char c: s) {
        cout << c << endl;
    }
for (int i = 0; i < s.size(); ++i) {
    cout << s1[i];
}

字符串的替换

string src_s = "abcdef";
string s1 = "0123456789";
// 首先参数摆出最长的,后面就可以参考这个!!
src_s.replace(1, 2, s1, 3, 4);
/**
 * 这个表示 在原来的字符串 src_s 中的
 *  -> 1号位置 开始,加上这个位置往后的2个位置被替换掉,也就是替换掉 "bc" 被换掉
 *  -> 被替换的内容是 s1串 的3号位置开始,加上这个位置往后的4个位置来替换,也就是 "3456"
 *  -> 结果就是 a3456def
 */

src_s = "abcdef";
// 后面少一个参数,代表开始的位置是4号,长度就是剩余的全部长度,这个时候的替换成的内容是 456789 ,结果是 a456789def
src_s.replace(1, 2, s1, 4);
cout << src_s << endl;

// 将 bc 替换成 s1子串全部
src_s = "abcdef";
src_s.replace(1, 2, s1);
cout << src_s << endl;
  • 将子串替换成另外一个子串
void replace_sub_str(string &string1, string str1, string str2) {
    unsigned long i = string1.find(str1);
    // 如果找到子串,则开始替换
    while (i>=0 && i<string1.size()){
        string1.replace(i,str1.size(),str2);
        i = string1.find(str1);
    };
}


int main() {
    string s = "12123";
    replace_sub_str(s,"12","0");
    // 输出003
    cout << s << endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值