基于C++字符串替换函数的使用详解_C 语言

在C++中,字符串替换有很多方法,这里主要说一下STL里的WString中的替换,虽然WString自带了一个Replace函数,但是只能替换一次,太不好了,因此单独写了个替换函数
[函数]

复制代码 代码如下:

/**
        * @brief   实现字符串替换
        * @param   orignStr 源串
        * @param   oldStr  查找的串
        * @param   newStr  替换的新串
        * @return  返回修改后的串
        */
        static wstring Replace(const wstring& orignStr, const wstring& oldStr, const wstring& newStr);

[实现]

复制代码 代码如下:

std::wstring Replace( const wstring& orignStr, const wstring& oldStr, const wstring& newStr )
{
    size_t pos = 0;
    wstring tempStr = orignStr;
    wstring::size_type newStrLen = newStr.length();
    wstring::size_type oldStrLen = oldStr.length();
    while(true)
    {
        pos = tempStr.find(oldStr, pos);
        if (pos == wstring::npos) break;
        tempStr.replace(pos, oldStrLen, newStr);        
        pos += newStrLen;
    }
    return tempStr;
}

时间: 2024-09-21 09:00:53

基于C++字符串替换函数的使用详解_C 语言的相关文章

C++的字符串分割函数的使用详解_C 语言

经常碰到字符串分割的问题,这里总结下,也方便我以后使用. 一.用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串. 参数说明:str为要分解的字符串,delim为分隔符字符串. 返回值:从str开头开始的一个个被分割的串.当没有被分割的串时则返回NULL. 其它:strtok函数线程不安全,可以使用strtok_r替代. 示例: //借助strtok实现split #include <st

基于C/C++时间函数的使用详解_C 语言

C/C++对时间的操作也有许多值得大家注意的地方.最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作.获取和显示等等的问题.下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法.通过学习许多C/C++库,你可以有很多操作.使用时间的方法.但在这之前你需要了解一些"时间"和"日期"的概念,主要有以下几个:Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Gre

C++中可以接受任意多个参数的函数定义方法(详解)_C 语言

能够接受任意多个参数的函数,可以利用重载来实现.这种函数的执行过程类似于递归调用,所以必须要有递归终止条件. #include <iostream> #include <bitset> void print() {} // 递归终止条件.这是必需的. template<typename Type, typename... Types> void print(const Type& arg, const Types&... args) { std::cou

C语言 用指针作为函数返回值详解_C 语言

C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include <stdio.h> #include <string.h> char *strlong(char *str1, char *str2){ if(strlen(str1) >= strlen(str2)){ return str1; }else{ return str2; } } int main(){ cha

基于Windows API分解路径问题的详解_C 语言

在很多代码中看到,由于需要获取一个路径字符串中的文件名或者扩展名,很多程序员都用了c库中的字符串查找函数来获取.这样子写得代码很多,也麻烦.其实在VC中,可以用更好的方法来获取.没有什么特别多说明,代码如下: 复制代码 代码如下:     LPTSTR szfileName = new TCHAR[MAX_PATH];     GetModuleFileName(NULL, szfileName , MAX_PATH);     // 获取盘符.文件名.扩展名等信息    wchar_t dri

C语言putenv()函数和getenv()函数的使用详解_C 语言

C语言putenv()函数:改变或增加环境变量头文件: #include4<stdlib.h> 定义函数: int putenv(const char * string); 函数说明:putenv()用来改变或增加环境变量的内容. 参数string 的格式为name=value, 如果该环境变量原先存在, 则变量内容会依参数string 改变, 否则此参数内容会成为新的环境变量. 返回值:执行成功则返回0, 有错误发生则返回-1. 错误代码:ENOMEM 内存不足, 无法配置新的环境变量空间.

基于C++ cin、cin.get()、cin.getline()、getline()、gets()函数的使用详解_C 语言

1.cin 2.cin.get() 3.cin.getline() 4.getline() 5.gets() 6.getchar() 附:cin.ignore();  cin.get()//跳过一个字符,例如不想要的回车,空格等字符 1.cin>>          用法1:最基本,也是最常用的用法,输入一个数字: #include <iostream> using namespace std; main () {    int a,b;    cin>>a>&g

基于C++ list中erase与remove函数的使用详解_C 语言

erase的作用是,使作为参数的迭代器失效,并返回指向该迭代器下一参数的迭代器.如下: 复制代码 代码如下: list ParticleSystem;list::iterator pointer;if(pointer->dead == true){   pointer = ParticleSystem.erase(pointer);} 有一段关于错误使用erase的程序 复制代码 代码如下: using namespace std;int main(){  std::listtest_list;

基于字符串移位包含的问题详解_C 语言

代码如下所示: 复制代码 代码如下: /************************************************************************//* 给定两个字符串s1和s2,要求判定s2是否能被s1做循环移位得到的字符串所包含例如,给定s1 = AABCD, s2 = CDAA,返回true,给定s1 = ABCD, s2 = ACBD,返回false*//************************************************