精华内容
下载资源
问答
  • c++字符串替换

    千次阅读 2018-08-16 19:35:40
    C++的string提供了replace方法来实现字符串的替换,但是对于将字符...用新字符串替换所有旧字符串,替换之后仍可能出现出现有旧的字符串 string& replace_all替换之后不再出现有旧的字符串(替换的更彻底) ...

    C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事。

    string&   replace_all_distinct
    用新字符串替换所有旧字符串,替换之后仍可能出现出现有旧的字符串
    string&   replace_all替换之后不再出现有旧的字符串(替换的更彻底)

    编译软件:vs2013

    代码如下:
     

    #include  <string>   
    #include  <iostream>   
    #include <stdlib.h>
    using  namespace  std;
    string&   replace_all(string&   str, const   string&   old_value, const   string&   new_value)
    {
    	while (true)   {
    		string::size_type   pos(0);
    		if ((pos = str.find(old_value)) != string::npos)
    			str.replace(pos, old_value.length(), new_value);
    		else   break;
    	}
    	return   str;
    }
    string&   replace_all_distinct(string&   str, const   string&   old_value, const   string&   new_value)
    {
    	for (string::size_type pos(0); pos != string::npos; pos += new_value.length())   {
    		if ((pos = str.find(old_value, pos)) != string::npos)
    			str.replace(pos, old_value.length(), new_value);
    		else   break;
    	}
    	return   str;
    }
    int   main()
    {
    	cout << replace_all(string("12212"), "12", "21") << endl;
    	cout << replace_all_distinct(string("12212"), "12", "21") << endl;
    	system("pause");
    }
    

    结果:

    展开全文
  • C++ 字符串替换

    千次阅读 2015-08-24 16:18:44
    C++实现字符串的分割和替换,作为平时代码库的储备,仅供各位猿友参考.

    代码编译运行平台:VS2017+Win32+Debug

    以下代码,作为平时代码库的储备,仅供各位参考:

    //@brief: 替换指定的子串
    //@param: src:原字符串 target:待被替换的子串 subs:替换的子串
    string replaceALL(const char* src, const string& target,const string& subs) {
    	string tmp(src);
    	string::size_type pos =tmp.find(target),targetSize =target.size(),resSize =subs.size();  
    	while(pos!=string::npos) {  
    		tmp.replace(pos,targetSize,subs);
    		pos =tmp.find(target, pos + resSize);
    	}
    	return tmp;
    }
    

    代码主要说明:
    (1)tmp.find(target):查找子串第一次出现的下标;
    (2)string::npos:表示未查找到子串时返回的数值。MSDN中规定,其值定义如下:static const size_type npos = -1;,转换为无符号整型unsignned int表示的是string所能容纳的最大字符数。
    (3)string::size_type (由字符串配置器 allocator 定义) 描述的是 string的size,故需为无符号整数型别。因为字符串配置器缺省以类型size_t 作为 size_type。


    参考文献

    [1]std::string::find() 和 std::string::npos

    展开全文
  • C++字符串替换

    2019-01-19 17:32:03
    #include &amp;lt;iostream&amp;gt; using namespace std; //转载,网上太多了,不知道原作者是谁了··· void string_replace(string &amp;amp; strBig, const string &......

    第一个方法是查的,百度一下挺多的···
    6秒左右吧,慢了然后自己写了第二个,也是6s多····························

    有好办法的老铁留言指教下,在此先谢过了!

    #include <iostream>
    
    using namespace std;
    
    //转载,网上太多了,不知道原作者是谁了···
    void string_replace(string & strBig, const string & strsrc, const string &strdst)
    {
        string::size_type pos = 0;
        string::size_type srclen = strsrc.size();
        string::size_type dstlen = strdst.size();
        while ((pos = strBig.find(strsrc, pos)) != string::npos)
        {
            // 如果能找到 pos
            strBig.replace(pos, srclen, strdst);
            pos += dstlen;
        }
    }
    
    void stringReplace(string & strBig, const string & strSrc, const string & strDst) {
        int startPos = 0;
    
        int lenStrBig = strBig.length();
        int lenStrSrc = strSrc.length();
        bool equ = false;
        for (int i = 0; i < lenStrBig; ++i) {
            if (equ) break;
            for (int j = 0; j < lenStrSrc; ++j) {
                if (strBig[i] != strSrc[j]) break;
                else {
                    if (j == 0) startPos = i;
                    ++i;
                }
                if (j == lenStrSrc - 1) equ = true;
            }
        }
    
        int endPos = startPos + lenStrSrc;
        string fin = "\0";
        for (int i = 0; i < startPos; ++i)
            fin += strBig[i];
    
        fin += strDst;
        for (int i = endPos; i < lenStrBig; ++i)
            fin += strBig[i];
    
        strBig = fin;
    }
    
    int main()
    {
        string str1, str2, str3;
        getline(cin, str1);
        getline(cin, str2);
        getline(cin, str3);
    
        string_replace(str1, str2, str3);
    
        stringReplace(str1, str2, str3);
    
        cout << str1;
    
        return 0;
    }
    
    
    展开全文
  • 本篇文章是对C++字符串替换函数的使用进行了详细的分析介绍,需要的朋友参考下
  • c++ 字符串替换

    千次阅读 2013-09-29 16:43:12
    字符串的空格替换为%20 we are happy. we%20are%20happy. // 复杂度O(n),从后向前的移动 // str4.cpp : 定义控制台应用程序的入口点。 // #include "stdio.h" #include "stdlib.h" #include ...
    将字符串的空格替换为%20

    we are happy.
    we%20are%20happy.

    // 复杂度O(n),从后向前的移动
    // str4.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdio.h"
    #include "stdlib.h"
    #include "iostream"
    
    using namespace std;
    
    void replace(char str[]);
    
    
    int main(int argc, char * argv[])
    {
    	char p[100] = "we are happy.";
    	replace(p);
    	cout<<p<<endl;
    	system("pause");
    	return 0;
    }
    
    void replace(char str[])
    {
    	if(str == NULL) return;
    	char * ps = str;
    	char * pn;
    	int num = 0;
    	 
    	while(*ps != '\0')
    	{
    		if(*ps == ' ')
    			num++;
    		ps++;
    	}
    
    	// ps 指向原字符串的末尾
    	// pn 指向新的字符串的末尾
    	pn = ps + 2 * num;
    
    	while(ps >= str && pn > ps)
    	{
    		while(*ps != ' ' && ps >= str && pn > ps)
    		{
    			*pn-- = *ps--;
    		}
    		
    		if(ps >= str && pn > ps)
    		{
    			*pn-- = '0';
    			*pn-- = '2';
    			*pn-- = '%';
    			ps--;
    		}
    	}
    
    }




    // str3.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdio.h"
    #include "stdlib.h"
    #include "iostream"
    
    using namespace std;
    
    char * convert(char * p);
    
    int main(int argc, char * argv[])
    {
    	char p[] = "weisong";
    	char * r = convert(p);
    	if(r)
    	{
    		cout<<r<<endl;
    	}
    
    	char p2[] = "we are happy.";
    	cout<<p2<<endl;
    	r = convert(p2);
    	if(r)
    	{
    		cout<<r<<endl;
    	}
    
    	system("pause");
    	return 0;
    }
    
    char * convert(char p[])
    {
    	if(p == NULL)
    		return NULL;
    	if(strstr(p, " ") == NULL)
    		return p;
    
    	int length = strlen(p);
    	int blankNum = 0;
    	char * s = p;
    	while(*p != '\0')
    	{
    		if(*p == ' ')
    			blankNum++;
    		p++;
    	}
    
    	int newLength = length + blankNum * 2;
    	char * result  = new char[newLength * sizeof(char) + 1];//(char*)malloc(newLength * sizeof(char) + 1);
    	if(result == NULL) return NULL;
    
    	p = s;
    	char * t = result;
    
    	char * pre = p;
    	while(*p != '\0')
    	{
    		bool f = false;
    		// 找到空格
    		while(*p != ' ')
    		{
    			if(*p == '\0')
    			{
    				f = true;
    				break;
    			}
    
    			pre = p;
    			*t++ = *p;
    			p++; 
    		}
    
    		if(f)
    			break;
    
    		// 处理空格
    		*t++ = '%';
    		*t++ = '2';
    		*t++ = '0';
    		p++;
    	}
    
    	*t++ = '\0';
    
    	return result;
    }



    展开全文
  • 比如对于字符串替换就可以有很多方法来实现,这里主要说一下STL里的WString中的替换,虽然WString自带了一个Replace函数,但是只能替换一次,太不好了,因此单独写了个C++字符串替换函数 C++字符串替换函数代码...
  • 目录:使用str.split() 切分数据将 datetime 类型转化为字符串类型字符串的合并操作使用 str.strip() 去除字符串前面和后面所有的字符串替代字符串中的某些字符串为另外的字符串Python 中的 i++,i+下面简单的演示。...
  • 比如对于字符串替换就可以有很多方法来实现,这里主要说一下STL里的WString中的替换,虽然WString自带了一个Replace函数,但是只能替换一次,太不好了,因此单独写了个C++字符串替换函数 C++字符串替换函数
  • 这个例子把string字符串中的 " 替换成" 原作者Michael Mrozek ,在stackoverflow找到的https://stackoverflow.com/questions/3418231/replace-part-of-a-string-with-another-string #include <iostream> ...
  • 一个C++字符串替换和截取的实例

    千次阅读 2016-11-02 17:36:36
    一个C++字符串替换和截取的实例 #include #include /************************************************************************* *@Function: StringReplace * *@Param1 [IN/OUT]: strBase 传入的是原始...
  • C++字符串替换实现

    2020-04-12 15:19:11
    **如:**ReplaceAll(string("ghghjghugtghty"), std::string("gh"),std::string("X") 即为把"ghghjghugtghty"中的"gh"全部改为"X"。 std::string ReplaceAll(std::string str, const std::string&...
  • 学习使用函数之前,先来看一下函数的语法结构。函数的调用和变量的调用很像。引用变量的格式为$(变量...调用函数的时候要使用字符“$”,后面可以跟小括号也可以使用花括号。这个其实我们并不陌生,我们之前使用过许...
  • c/c++ 字符串替换

    2021-03-04 15:31:44
    无奈最近项目用c++,屡屡遇到困难,最基本功能都没有。只能自己写,贴出来只是为了日后谁遇到,省的重写了,直接复制好了,体力活。 char* str_replace_all(char *src, const char *sub, const char *dst) { int ...
  • 字符串是一个字符的、有序的、不可变的序列,用于存储基于文本的信息。字符串所包含的字符存在从左至右的位置顺序,不可以在原处(in-place)修改。Python没有C语言的字符和字符串之分,只有字符串。从严格意义上说...
  • 我的mfc程序有一部分是要通过识别字符串中的个别字符来实现换行,所以我想把字符串中的标志字符替换成换行符“\r\n”,如"与十进制数1023等值的十六进制数为( )。|A.3FD|B.3FF|C.2FD|D.2FF"其中“|”换成“\r\n...
  • 【转】C++ 字符串替换

    2009-08-02 19:59:00
    http://www.cnblogs.com/rezkk/archive/2009/02/07/1385781.html#include<string> #include<iostream> usingnamespacestd; string&replace_all(string&...
  • 总时间限制:1000ms内存限制:65536kB描述把一个字符串中特定的字符全部用给定的字符替换,得到一个新的字符串。输入只有一行,由一个字符串和两个字符组成,中间用单个空格隔开。字符串是待替换字符串字符串长度...
  • 使用c++写的字符串替换函数,可以完成字符串的替换功能
  • C++ 字符串替换字符串中的字符

    千次阅读 2019-04-07 09:31:36
    仅供本人学习记录 Description Write a program to input several strings from the keyboard and replace ...输入有多行,第一行输入一个整数N,后面N行每行输入一个字符串,以‘#’为定界符表示字符串结束 Outpu...
  • C++的string提供了replace方法来实现字符串替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事。首先明白一个概念,即string替换所有字符串,将”12212″这个字符...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,186
精华内容 874
关键字:

c++字符串替换

c++ 订阅