C++ – std::string替换字符串中所有指定的子字符串
本文作者: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++STL容器 - std::map容器修改、元素操作总结 clear,insert,emplace,erase,swap,merge,extract,insert_or_assign等 阅读1091次,点赞0次
- C++ - std::string与std::wstring相互转换 阅读1556次,点赞0次
- C++ - Windows获取电脑上摄像头设备数目、名字以及id 阅读96次,点赞0次
- C++ - 使用ffmpeg读取视频旋转角度并使用OpenCV根据旋转角度对视频进行旋转复原 阅读1520次,点赞0次
- C++ - return this和return *this的含义和区别 阅读163次,点赞0次
- C++ - 字节数组byte[]或者unsigned char[]与long的相互转换 阅读736次,点赞0次
- C++STL容器 - std::vector构造方式与分配值方式总结 阅读579次,点赞0次
- C++STL容器 - std::map删除指定元素 阅读1284次,点赞0次
- C++ - 使用C++标准库过滤Windows文件名中的非法字符 阅读4197次,点赞1次
- C++11 - 封装std::thread,增加子线程启动、暂停、唤起、停止功能 阅读3685次,点赞7次
全站随机文章推荐
- CMake - 设置Debug或者Release编译模式 阅读1564次,点赞0次
- 资源分享 - The NURBS Book (2nd,Les Pieg) 英文版PDF下载 阅读5157次,点赞2次
- 资源分享 - Game AI Pro 360 - Guide to Tactics and Strategy 英文高清PDF下载 阅读1569次,点赞0次
- Modern OpenGL - GLSL着色语言3:GLSL中的数据类型 阅读1720次,点赞0次
- C++ 11 - final关键字简要介绍 阅读1757次,点赞0次
- 资源分享 - OpenGL 4.0 Shading Language Cookbook (Second Edition) 英文高清PDF下载 阅读1753次,点赞0次
- C++11 - 父类与子类相互包含的时候该如何正确的使用智能指针,防止循环引用 阅读2298次,点赞0次
- FFmpeg - 将某个文件夹下的图片按标号顺序合成为指定编码格式和指定帧率的视频 阅读3907次,点赞0次
- Python - 运算符/、//和%的含义与区别 阅读264次,点赞0次
- 资源分享 - Vector Field Processing on Triangle Meshes高清PDF下载 阅读2043次,点赞0次
评论
164