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()函数输出传入的字符串。 展开
已知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()函数输出传入的字符串。 展开
1个回答
展开全部
这个问题属于数据结构中模式匹配的问题 ,如果简单处理的话,那么只需要做一个个字符的比较就可以实现,如果完全匹配那么可以进行替换,如果不可以的话那么继续在前位置上向后匹配。当然也有更好的方法,模式匹配的一个经典算法,书上有。如果使用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;
}
这个代码你看看 希望对你有帮助 , 具体方法的意义 你可以看看
#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;
}
这个代码你看看 希望对你有帮助 , 具体方法的意义 你可以看看
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询