c++ string的详细用法(14)replace()

本文详细介绍了C++中字符串替换的六种方法,包括替换指定长度的字符、替换为另一字符串的部分内容、替换为相同字符的序列等。通过具体实例展示了每种方法的使用方式及其结果。
string a="1234abcd5678efgh";
string b="ABCD";

1.在string字符串的某一个位置开始长度为m的字符被替换另一个(string)字符串
replace(size_t n,size_t m,const char* str);
a.replace(4,3,"替换"; //结果为 a="1234替换d5678efgh";

replace(size_t n,size_t m,const string& str);
a.replace(4,3,b); //结果为 a="1234ABCDd5678efgh";

replace(const_iterator n,const_iterator m,const char* str);
a.replace(a.begin()+3,a.begin()+6,"替换");
//结果为 a="123替换cd5678efgh";

replace(const_iterator n,const_iterator m,const string& str);
a.replace(a.begin()+5,a.end()-3,b);
//结果为 a="1234aABCDfgh";

2.在string字符串的某一个位置开始长度为m的字符被替换另一个字符串的前k位
replace(size_t n,size_t m,const char* str,size_t k);
a.replace(6, 3, "THJKL", 2); //结果为 a="1234abTH678efgh";

replace(const_iterator n,const_iterator m,const char* str,size_t k);
a.replace(a.begin() + 6, a.end() - 3, "THJKL", 2);
//结果为 a="1234abTHfgh";

3.在string字符串的某一个位置开始长度为m的字符被替换为另一个string字符串从i位置长度为j的字符
replace(size_t n,size_t m,const string& str,size_t i,size_t j);
a.replace(6, 3, b, 1, 3); //结果为 a="1234abBCD678efgh";

4.在string字符串中的某一个位置开始长度为m的字符被替换为k个相同的字符
replace(size_t n,size_t m,size_t k,char c);
a.replace(6, 3, 5, '@'); //结果为 a="1234ab@@@@@678efgh";

replace(const_iterator n,const_iterator m,size_t k,char c);
a.replace(a.begin()+6, a.end()-3, 5, '>');
//结果为 a="1234ab>>>>>fgh";

5.在string字符串中的某一个字符区间被替换为另一个string字符串字符区间
template<typename T>
replace(const_iterator n,const_iterator m,T first,T last);
a.replace(a.begin() + 6, a.end() - 3, b.begin(), b.end() - 1);
//结果为 a="1234abABCfgh";

6.replace(const_iterator n,const_iterator m,initializer_list<char> il);
//暂时不知道如何使用此函数

# C++ string 详细用法大全 C++中的string类是在标准库中定义的,提供了丰富的字符串操作功能,比C风格的字符串(char数组)更安全、更方便。 ## 基本用法 ### 1. 头文件 ```cpp #include <string> using namespace std; ``` ### 2. 初始化 ```cpp string s1; // 空字符串 string s2("Hello"); // 用C风格字符串初始化 string s3 = "World"; // 赋值初始化 string s4(5, 'a'); // 5个'a'组成的字符串 string s5(s2); // 拷贝构造函数 ``` ### 3. 常用操作 #### 访问元素 ```cpp string s = "Hello"; char c1 = s[0]; // 'H',不检查越界 char c2 = s.at(1); // 'e',会检查越界 ``` #### 修改字符串 ```cpp s += " World"; // 连接字符串 s.append("!!!"); // 追加字符串 s.insert(5, " dear");// 在位置5插入 s.erase(5, 5); // 从位置5开始删除5个字符 s.replace(6, 5, "there"); // 替换从6开始的5个字符为"there" ``` #### 容量操作 ```cpp s.size(); // 返回字符串长度 s.length(); // 同size() s.empty(); // 判断是否为空 s.capacity(); // 返回分配的存储空间 s.resize(10); // 调整字符串大小 s.reserve(100); // 预留空间 ``` #### 查找操作 ```cpp s.find("lo"); // 返回首次出现的位置(2) s.rfind("l"); // 返回最后出现的位置(3) s.find_first_of("aeiou"); // 查找任意一个字符首次出现 s.find_last_of("aeiou"); // 查找任意一个字符最后出现 s.find_first_not_of("aeiou"); // 查找第一个不是元音的字符 ``` #### 比较操作 ```cpp s.compare("Hello"); // 相同返回0,小于返回负数,大于返回正数 s == "Hello"; // 直接比较 s < "Hello"; // 字典序比较 ``` #### 子字符串 ```cpp string sub = s.substr(6, 5); // 从位置6开始取5个字符 ``` #### 转换操作 ```cpp const char* cstr = s.c_str(); // 转换为C风格字符串 string num = to_string(123); // 数字转字符串 int n = stoi("456"); // 字符串转整数 double d = stod("3.14"); // 字符串转浮点数 ``` ## 其他高级用法 ### 迭代器 ```cpp for(auto it = s.begin(); it != s.end(); ++it) { cout << *it; } for(char c : s) { cout << c; } ``` ### 与流一起使用 ```cpp stringstream ss; ss << "Number: " << 123; string result = ss.str(); ``` ### 字符串分割 ```cpp vector<string> split(const string &s, char delim) { vector<string> tokens; string token; istringstream tokenStream(s); while(getline(tokenStream, token, delim)) { tokens.push_back(token); } return tokens; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尔灵尔亿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值