【C++编程题】字符串子串替换
文章目录
- 题目描述
- 题目提示
- 参考代码
- 1. 一次替换
- 2. 全部替换
- 完整代码
题目描述
编写函数
void reOnce(char src[], char obj[], char sub[])
,函数功能是用sub
字符串替换长串src
内第一次出现的obj
子串。编写函数
void repAll(char src[], char obj[], char sub[])
,函数功能是用sub
字符串替换长串src
内出现所有的obj
子串。
void repOnce(char src[], char obj[], char sub[]);
void repAll(char src[], char obj[], char sub[]);
原始代码:
#include <iostream>
#include <cstring>
using namespace std;
void repOnce(char src[], char obj[], char sub[]);
void repAll(char src[], char obj[], char sub[]);int main(){char c[100],obj[100],sub[100];cout << "依次输入src,obj,sub:"<<endl;cin.getline(c,100);cin.getline(obj,100);cin.getline(sub,100);repOnce(c, obj, sub);cout << c << endl;cout << "依次输入src,obj,sub:"<<endl;cin.getline(c,100);cin.getline(obj,100);cin.getline(sub,100);repAll(c, obj, sub);cout << c << endl;return 0;
}void repOnce(char src[], char obj[], char sub[]){/*--------Your Code Here--------*/
}void repAll(char src[], char obj[], char sub[]){/*--------Your Code Here--------*/
}
题目提示
cin.getline
允许读取包含空格的字符串。它将持续读取,直到它读取至最大指定的字符数,或直到按下了回车键。
可使用库函数strcpy
strcmp
strncpy
strncmp
strstr
等。
strcpy
函数:strcpy(char ds[], char ss[])
,作用是把ss
字符串复制给ds
指向的内存区域。
strncmp
函数:int strncmp (char ds[], char ss[], int len)
,作用是比较ds串和ss串中的前面len
个字符,如果相同返回0,如果ds
<ss
,返回-1,否则返回1。
strncpy
函数:strncpy(char ds[], char ss[], int len)
,作用是把ss
中的前len
个字符复制到ds
指向的内存区域。
strstr
函数:char *strstr(const char *s, const char *needle)
在字符串s
中查找第一次出现字符串needle
的位置,不包含终止符 ‘\0’。
该函数返回在s
中第一次出现needle
字符串的位置,如果未找到则返回 null。
参考代码
1. 一次替换
void repOnce(char src[], char obj[], char sub[]){char *p = strstr(src, obj);char tail[100];strcpy(tail,p+strlen(obj));strcpy(p,sub);strcpy(p+strlen(sub), tail);
}
2. 全部替换
解法一
void repAll(char src[], char obj[], char sub[]){while(strstr(src,obj)) repOnce(src,obj,sub);
}
解法二
void repAll(char src[], char obj[], char sub[]){//while(strstr(src,obj)) repOnce(src,obj,sub);char *p = src;char target[100], *q = target;while(*p!='\0'){if(strncmp(p, obj, strlen(obj))==0){strcpy(q,sub);p += strlen(obj);q += strlen(sub);}else*q++ = *p++;}*q = '\0';strcpy(src,target);
}
完整代码
#include <iostream>
#include <cstring>
using namespace std;
void repOnce(char src[], char obj[], char sub[]);
void repAll(char src[], char obj[], char sub[]);int main(){char c[100],obj[100],sub[100];cout << "依次输入src,obj,sub:"<<endl;cin.getline(c,100);cin.getline(obj,100);cin.getline(sub,100);repOnce(c, obj, sub);cout << c << endl;cout << "依次输入src,obj,sub:"<<endl;cin.getline(c,100);cin.getline(obj,100);cin.getline(sub,100);repAll(c, obj, sub);cout << c << endl;return 0;
}void repOnce(char src[], char obj[], char sub[]){char *p = strstr(src, obj);char tail[100];strcpy(tail,p+strlen(obj));strcpy(p,sub);strcpy(p+strlen(sub), tail);
}void repAll(char src[], char obj[], char sub[]){while(strstr(src,obj)) repOnce(src,obj,sub);
}
【C++编程题】字符串子串替换相关推荐
- 牛客网编程题——字符串_空格替换
题目描述 请编写一个方法,将字符串中的空格全部替换为"%20".假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字 ...
- [编程题]字符串最后一个单词的长度
输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. 输入例子: hello world 输出例子: 5 代码说明: import java.util.*;pub ...
- 2016去哪儿编程题:字符替换
字符串替换 题目描述 请你实现一个简单的字符串替换函数.原串中需要替换的占位符为"%s",请按照参数列表的顺序一一替换占位符.若参数列表的字符数大于占位符个数.则将剩下的参数字符添 ...
- 【C语言进阶】指针编程题—字符串翻转
目录 写在前面 正文 练习一:左旋字符串 练习二:字符串旋转异同判断 练习三:杨氏矩阵 写在最后 写在前面 这是有关指针的大题 正文 练习一:左旋字符串 题目要求:实现一个函数,可以左旋字符串中的K个 ...
- 牛客网编程题——字符串_确定两串乱序同构
题目描述 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串.这里规定大小写为不同字符,且考虑字符串中的空格. 给定一个string stringA和一个string ...
- python笑傲江湖统计字数_python编程题----字符串的处理(统计)
<射雕英雄传>是金庸的重要武侠作品之一.这里给出一个<射雕英雄传>的网络版本,文件名为"射雕英雄传-网络版.txt". ...
- python编程题----字符串的处理(统计)
<射雕英雄传>是金庸的重要武侠作品之一.这里给出一个<射雕英雄传>的网络版本,文件名为"射雕英雄传-网络版.txt". ...
- 网易2018校园招聘编程题真题集合
1/8 [编程题]魔法币 #include<bits/stdc++.h> using namespace std; #define clr(a) memset(a, 0, sizeof(a ...
- 网易2018校园招聘编程题
[编程题] 魔法币 时间限制:1秒 空间限制:32768K 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0) ...
最新文章
- 张仰彪第二排序法_C语言中的最常用的两种排序算法你知道吗?
- CentOS内核编译
- c++判断正在使用的显卡_7°C警告:廉价硅脂害死显卡系列!还在用¥5块钱一大碗的导热膏吗...
- 不要打2岁内和6岁后的孩子 父母必看
- 51单片机——SPI
- Scanner进阶详细讲解
- 2022电工杯数学建模A题目思路总结分享
- 电视hdr测试软件,HDR是什么意思 如何打开电视机的HDR10模式
- 2020.10.1--PS--画笔色彩模式、画笔预设、自定义画笔
- python学习笔记六
- Eureka自我保护机制原理及作用enable-self-preservation
- 机械设备维修报修小程序开发制作功能介绍
- 【C语言】打印二叉树树形(制表符实现,清晰+高拓展)(2022-10-22 更新—偏移量说明)
- 在你们眼中,杭州和苏州都是江南名城,有什么区别?
- 仿造虎扑步行街首页。
- 邦纳超声波传感器T30UXDA
- Ueditor上传图片文件大小上限问题
- 未能加载文件或程序集 Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken= 1cee9f8bde3db106或它的某
- vue控制台报错Duplicate keys detected:‘xxxx‘.This may canse an update error
- 大疆文档(8)-Android教程-模拟器App