C++的字符串替换程序题,先谢谢啊!

给定字符串a、b及c,将a中所有出现的b替换为c。替换时优先替换靠前的字符串,例如a='abbb',b='bb',c='c',则替换后的字符串为acb,因为优先替换前两个... 给定字符串a、b及c,将a中所有出现的b替换为c。替换时优先替换靠前的字符串,例如a='abbb',b='bb',c='c',则替换后的字符串为acb,因为优先替换前两个b。字符串最大长度为255。
已知main()函数为:
#include <cstdio>
#include "solution.h"

void print_str(char * str) {
printf("%s\n", str);
}

int main() {
char a[255], b[255], c[255];
scanf("%s%s%s", a, b, c);
replace(a, b, c);
return 0;
}
求:在solution.h中编写replace函数。通过调用print_str()函数输出传入的字符串。
展开
 我来答
萧然111
2011-01-06 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:0
展开全部
这个问题属于数据结构中模式匹配的问题 ,如果简单处理的话,那么只需要做一个个字符的比较就可以实现,如果完全匹配那么可以进行替换,如果不可以的话那么继续在前位置上向后匹配。当然也有更好的方法,模式匹配的一个经典算法,书上有。如果使用C++中的string类较为更容易一些。举例实现如下。
#include "iostream"
#include "string"
using namespace std;

int main() {
string source_String("abbb");
string find_String("bb");
string obj_String("c");

int start_pos = 0,length = 0;

if (source_String.find(find_String) == -1)
{
cout<<"没有匹配的字符串"<<endl;
return -1;
}
start_pos = source_String.find(find_String);
length = find_String.length();

source_String.replace(start_pos,length,obj_String);
cout<<source_String<<endl;
return 0;
}
这个代码你看看 希望对你有帮助 , 具体方法的意义 你可以看看
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式