-
2021-04-06 09:30:04
C++的string提供了replace方法,实现字符串的替换。但是涉及到将string串中的某个字符替换成新的字符的功能,在提供的replace方法中没有实现。
在 #include<algorithm> 中也有一个replace方法,它可以实现我们想要的。
#include <algorithm> int main() { string str = "[1,2,3,4,5]"; cout << str << endl; replace(str.begin(), str.end(), ',', ' ');//将逗号替换为空格 cout << str << endl; }
[1,2,3,4,5]
[1 2 3 4 5]更多相关内容 -
C++ 中String 替换指定字符串的实例详解
2021-01-01 04:03:51首先明白一个概念,即string替换所有字符串,将”12212″这个字符串的所有”12″都替换成”21″,结果是什么? 可以是22211,也可以是21221,有时候应用的场景不同,就会希望得到不同的结果,所以这两种答案都做了... -
C++中string替换所有指定字符串的方法
2020-12-17 16:37:10首先明白一个概念,即string替换所有字符串,将”12212″这个字符串的所有”12″都替换成”21″,结果是什么? 可以是22211,也可以是21221,有时候应用的场景不同,就会希望得到不同的结果,所以这两种答案都做了... -
c++ string替换指定字符串内的所有字段
2019-04-10 14:02:37从cmd获取到的字符串多了\r\r\n,想把其替换掉,经查string.replace并不具备将字符串中,某个字符串,所有都替换功能,分析原因可能是情况太多了,例如: 此博客自己写的replace_all 用此函数,测试普通字符串,无...从cmd获取到的字符串多了\r\r\n,想把其替换掉,经查string.replace并不具备将字符串中,某个字符串,所有都替换功能,分析原因可能是情况太多了,例如:
用此函数,测试普通字符串,无问题,可正常替换;
仔细测试,bug出现:
目的:替换掉以下字符串中间的\r\r\n为空(等同过滤),正确输出:
目的字符串:00:50:56:C0:00:08MACAddress=01:50:56:C0:00:08MACAddress=02:50:56:C0:00:08
原字符串:00:50:56:C0:00:08\r\r\n\r\r\n\r\r\nMACAddress=01:50:56:C0:00:08\r\r\n\r\r\n\r\r\nMACAddress=02:50:56:C0:00:08
调用博客中函数结果:只替换了一处。
分析:普通替换 新值长度至少为1
多-------少 1234-----=534(12替换为5)//replace_all(“1234”, “12”, “5”)
少--------多 1234--------125634(2替换为256)//replace_all(“1234”, “2”, “256”)
以上新的替换值长度至少为1
特殊替换: 新值为空,长度为0
1\n\r2---------12(\n\r替换为空后,长度由4变成2)//replace_all(“1\n\r2”, “\n\r”, “”);
新的替换值长度为0(空),此时以上博客函数,对大小判断表现出不严谨,经仔细斟酌修改如下:
//替换1 全部替换1次 12212 替换12为21------>21221 string& replace_all_distinct(string& str, const string& old_value, const string& new_value) { string::size_type pos=0; while((pos=str.find(old_value,pos))!= string::npos) { str=str.replace(pos,old_value.length(),new_value); if(new_value.length()>0) { pos+=new_value.length(); } } return str; } //替换2 循环替换,替换后的值也检查并替换 12212 替换12为21----->22211 string& replace_all(string& str, const string& old_value, const string& new_value) { string::size_type pos=0; while((pos=str.find(old_value))!= string::npos) { str=str.replace(str.find(old_value),old_value.length(),new_value); } return str; }
每次都从头查找替换,此问题解决!
警示:若用开源函数务必仔细测试,重在思路,而不是照搬,灵活运用才能游刃有余,谨慎测试 免除后患!
-
C++ string替换指定字符
2020-09-03 19:56:08比如,我在资源管理器地址栏直接赋值地址后,输入给某一string变量,程序中使用这一地址前,首先需要将反斜杠替换为正斜杠,程序如下: #include<iostream> #include<string> #include<algorithm&...string自带replace()方法并没有实现这一功能,需要借助<algorithm>中的replace()。
比如,我在资源管理器地址栏直接赋值地址后,输入给某一string变量,程序中使用这一地址前,首先需要将反斜杠替换为正斜杠,程序如下:
#include<iostream> #include<string> #include<algorithm> using namespace std; void main() { cout << "输入地址:"; string dir; getline(cin, dir); cout << endl << dir << endl; replace(dir.begin(), dir.end(), '\\', '/'); cout << dir << endl; }
-
C++ String替换&分割指定字符串
2020-08-24 14:25:571、C++ String替换指定字符串 C++的string对象提供了replace方法来实现字符串的替换,本文实现对于将字符串中某个字符串全部替换的功能。 string& replace_all(string& str, const string& strold, ...C++ String替换&分割指定字符串
1、C++ String替换指定字符串
C++的string对象提供了replace方法来实现字符串的替换,本文实现对于将字符串中某个字符串全部替换的功能。
string& replace_all(string& str, const string& strold, const string& strvalue) { while (true) { string::size_type pos(0); if ((pos = str.find(strold)) != string::npos) //"string::npos"means find failed str.replace(pos, strold.length(), strvalue); else break; } std::cout << str<<std::endl; return str; }
2、String分割指定字符串
根据指定的标识进行分割字符串。
void Split(const string& src, const string& separator,vector<std::string>& dest) { string str = src; string substring; string::size_type start = 0, index=0; dest.clear(); index = str.find_first_of(separator, start); do { if (index != string::npos) { substring = str.substr(start, index - start);//从start截取长度为index-start的字符串 dest.push_back(substring); start = index + separator.size();//重新找起点 index+分割字符串长度为起点 index = str.find(separator, start);//从开始到下一个分隔符处 if (start == string::npos) break; } } while (index != string::npos); substring = str.substr(start); //最后一部分字符串(下标为start开始一直到结尾) dest.push_back(substring); }
spolt函数参数说名:参数1:要分割的字符串;参数2:作为分隔符的字符;参数3:存放分割后的字符串的vector向量。
3、string中find_first_of和find方法说明
区别:
find_first_of 函数最容易出错的地方是和find函数搞混。它最大的区别就是如果在一个字符串str1中查找另一个字符串str2,如果str1中含有str2中的***任何字符***,则就会查找成功,而find则不同;
下面例子在自己跑一边 就能理解他俩不同之处了。
int strFind() { string str1("Hi,every one! I am heat_nan from ZZULI. one"); string str2("heat_nan"); int k = str1.find(str2); cout << "The position of 'heat_nan' is " << k << endl; int k1 = str1.find("one"); cout << "The postion of the first 'one' is " << k1 << endl; int k2 = str1.find("one of", k1 + 1, 3);//从str1中的k+1个字符开始查找"one of"的前三个字符 cout << "The postion of the second 'one' is " << k2 << endl; int k3 = str1.find_first_of("aeiou");//here k3=1 while (k3 != string::npos) //"string::npos"means find failed { str1[k3] = '*'; k3 = str1.find_first_of("aeiou", k3 + 1); } cout << str1 << endl; return 0; }
-
c++中string替换字符串中某段字符
2022-03-31 21:53:31string str="ab3[a]"; str=str.replace(0,3,"c"); cout<<str<<endl; res: c[a] -
C++ string 替换指定字符
2018-09-08 19:00:26C++的string提供了replace方法来实现字符串的替换,但是有时候我们想要实现类似JAVA中的替换功能——将string中的某个字符a全部替换成新的字符b,这个功能在提供的replace方法中并没有实现。 不过只要再深入了解... -
C++ string替换指定字符实例代码
2020-12-26 09:10:23C++的string提供了replace方法来实现字符串的替换,但是有时候我们想要实现类似JAVA中的替换功能——将string中的某个字符a全部替换成新的字符b,这个功能在提供的replace方法中并没有实现。 不过只要再深入了解一下... -
string替换所有指定字符串(C++)
2020-07-01 16:00:00首先明白一个概念,即string替换所有字符串,将"12212"这个字符串的所有"12"都替换成"21",结果是什么? 可以是22211,也可以是21221,有时候应用的场景不同,就会希望得到不同的结果,所以这两种答案都做了实现,... -
c++ 依照string replace 字符串
2022-05-08 15:16:17#include <iostream> #include <algorithm>...string replace(string _str,const string& _findWord,const string& _replaceWord){ if (_str.empty()) return ""; else { . -
C++ 学习之string字符串查找替换
2021-10-17 20:34:57替换:在指定的位置替换字符串 2、函数原型:(由于涉及到的函数比较多,只写一些重点的,其他都大同小异,用到的时候再来查就可以了) int find(const string& str, int pos = 0) const; //查找str第一次出现... -
详解C++ string字符串类
2020-12-25 20:20:38string直接支持字符串的插入和替换 string同时具备字符串数组的灵活性,可以通过[ ]重载操作符来访问每个字符。 字符串数组和string对象尽量不要混合使用,会带来意想不到的问题 例如,通过字符串数组赋值给string对象:... -
C++字符串高效查找替换
2020-12-22 15:49:40在近的一个项目中,需要实现几万字符的查找替换,我使用CString的Replace花了两个小时,才完成替换。使用stl的string,花了大概6分钟。 万般无赖,使用char*,自己实现查找替换吧,在1秒以内完成了替换。参考了... -
c++ 字符串替换所有字符串
2022-04-17 09:45:34我们常常会使在字符串中替换所有某些字符串的操作: int replace_all(string& str,const string& pattern, const string& newpat) { int count = 0; const size_t nsize = newpat.size(); const ... -
c++string字符串查找和替换
2022-03-02 12:59:28#include<iostream>...replace(2, 3, "1111111111")替换从下标2开始的后3个字符子串为“1111111111” */ void test() { string str1 = "abcdefghi";//string 的无参构造 cout<<str1. -
C++笔记-用指定字符串替换目标字符串中的字串-find-substr-replace
2022-02-17 11:35:35功能是:用字符串zhangsan、lisi、wangwu替换目标字符串names=[\"#1\",\"#2\",\"#3\"]中的#1、#2、#3; 结果是:names=[\"zhangsan\",\"lisi\",\"wangwu\"]; 1.使用std::string的replace方法; std::string org_str... -
c++ 字符串替换指定字符
2020-09-06 17:03:15这个例子把string字符串中的 " 替换成" 原作者Michael Mrozek ,在stackoverflow找到的https://stackoverflow.com/questions/3418231/replace-part-of-a-string-with-another-string #include <iostream> ... -
std::string 替换指定字符串中指定的子串
2019-11-19 17:01:12//************************************ ...// Describe: 使用指定子串替换字符串中的字符串,如果要替换的字符串为空,则移除原序列中的指定子串 // FullName: ReplaceStringInStd // Access: publ... -
C++string字符串查找和替换 string字符串查找和替换
2020-08-15 12:43:11替换: 在指定的位置替换字符串 int find(const string& str, int pos = 0) const; //查找str第一次出现位置,从pos开始查找 int find(const char* s, int pos = 0) const; //查找s第一次出现位置,从pos开始... -
c++ string字符串特定字符替换及含空格的字符串输入
2022-03-31 20:51:15#include<iostream> #include<string>... //包含空格的字符串输入 int len = str.length(); for (int i = len-1; i >=0; i--) { if (str[i] == ' ') str.replace(i, 1, "%20"); . -
c++快速替换字符串指定字符
2018-11-13 21:26:57项目中偶尔要用到替换指定字符的功能,因为不常用每次一用到的就去官方文档看,总得花点儿时间感觉不是那么好用,自己想了个办法,可能性能不是最好的但我感觉应该是最直观明了的;以下是实现: #include <... -
C++:替换文本中的指定字符串
2018-10-07 13:08:08替换文本文件或者二进制文件中的指定字符串 // 方法一 // 将源文件中的特定字符串替换,内容输出到新文件中 bool FileStringReplace(ifstream &amp;amp;amp;amp;amp;instream, ofstream &amp;amp;... -
C++ string字符串修改和替换方法详解
2019-07-07 12:08:13字符串内容的变化包括修改和替换两种。本节将分别讲解字符串内容的修改和字符串内容的替换。 字符串内容的修改 可以通过使用多个函数修改字符串的值。例如 assign(),operator=,erase(),交换(swap),插入... -
C++ string(c++字符串)详解(持续更新中)
2019-11-16 10:41:57c++之string类型详解声明一个c++字符串字符串操作函数C++字符串和C字符串的转换大小和容量函数元素存取比较函数更改内容提取子串和字符串连接输入输出操作搜索与查找 之所以抛弃char*的字符串而选用C++标准程序库中...