本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++ – std::string替换字符串中所有指定的子字符串
原文链接:https://www.stubbornhuang.com/2121/
发布于:2022年05月10日 10:14:43
修改于:2022年05月10日 10:14:43

1 std::string替换字符串中所有指定的子字符串
std::string
并没有提供类似repalceALL之类的方法,我们只能使用std::string::replace
方法逐个替换子字符串。
封装的方法如下:
std::string ReepalceAllString(std::string origin_str, const std::string& be_replaced_str, const std::string& new_replace_str)
{
std::string result_str = origin_str;
for (std::string::size_type pos = 0; pos != std::string::npos; pos += new_replace_str.length())
{
pos = result_str.find(be_replaced_str, pos);
if (pos != std::string::npos)
{
result_str.replace(pos, be_replaced_str.length(), new_replace_str);
}
else
{
break;
}
}
return result_str;
}
比如现在要将路径E:\\database\\test\\test2\\test3
中的\\
全部替换为反斜杠/
,示例程序如下:
#include <iostream>
#include <string>
std::string ReepalceAllString(std::string origin_str, const std::string& be_replaced_str, const std::string& new_replace_str)
{
std::string result_str = origin_str;
for (std::string::size_type pos = 0; pos != std::string::npos; pos += new_replace_str.length())
{
pos = result_str.find(be_replaced_str, pos);
if (pos != std::string::npos)
{
result_str.replace(pos, be_replaced_str.length(), new_replace_str);
}
else
{
break;
}
}
return result_str;
}
int main()
{
std::string str = "E:\\database\\test\\test2\\test3";
std::string strreplace = ReepalceAllString(str, "\\", "/");
std::cout << "原始字符串:" << str << std::endl;
std::cout << "替换后字符串:" << strreplace << std::endl;
return 0;
}
结果:
原始字符串:E:\database\test\test2\test3
替换后字符串:E:/database/test/test2/test3
当前分类随机文章推荐
- C++ - std::string与std::wstring相互转换 阅读726次,点赞0次
- C++ 11 - final关键字简要介绍 阅读1280次,点赞0次
- C++11 - std::function简要介绍以及可包装函数的几种形式总结 阅读2133次,点赞0次
- C++ - 函数返回多个返回值的方法总结 阅读574次,点赞0次
- C++11 - 使用std::thread,std::shared_future,std::promise并行化/多线程化for循环,提升处理速度 阅读494次,点赞0次
- C++11 - 使用std::codecvt进行字符编码转换需要注意的时间效率问题 阅读543次,点赞1次
- C++11 - 使用std::thread在类内部以成员函数作为多线程函数执行异步操作 阅读720次,点赞0次
- C++ - 格式化json字符串,方便展示json字符串的层次结构 阅读550次,点赞0次
- C++STL容器 - std::map容器修改、元素操作总结 clear,insert,emplace,erase,swap,merge,extract,insert_or_assign等 阅读141次,点赞0次
- C++ - 线程安全的std::cout 阅读933次,点赞0次
全站随机文章推荐
- 资源分享 - Python深度学习:基于PyTorch (吴茂贵著) 高清PDF下载 阅读2075次,点赞0次
- 在CSDN写博客五年之后,我成为了博客专家 阅读1335次,点赞0次
- UnrealEngine4 - 将TextureRenderTarget2D保存为图片 阅读1108次,点赞0次
- 资源分享 - C++程序设计语言(第1- 3部分),原书第4版 高清PDF下载 阅读1042次,点赞1次
- C++ - 字节数组byte[]或者unsigned char[]与int的相互转换 阅读3192次,点赞1次
- 资源分享 - Vector Field Processing on Triangle Meshes高清PDF下载 阅读1411次,点赞0次
- 一文带你从欧拉角的角度搞懂左手坐标系到右手坐标系的转换 阅读8798次,点赞14次
- 资源分享 - Visualizing Quaternions 英文高清PDF下载 阅读761次,点赞0次
- WordPress - 在用户注册页面显示自定义提示信息 阅读850次,点赞0次
- OpenCV - 打开摄像头并用窗口显示摄像头的内容 阅读2219次,点赞0次
评论
144