C++编程,查找字符串子串并替换。 10
#include <string>
using namespace std;
int main(){
string a;/////指定串,可根据要求替换
string b;////要查找的串,可根据要求替换
string c;
while(cin>>a>>b>>c)
{
int pos;
pos = a.find(b);////查找指定的串
while (pos != -1)
{
a.replace(pos,b.length(),c);////用新的串替换掉指定的串
pos = a.find(b);//////继续查找指定的串,直到所有的都找到为止
}
cout<<a<<endl;
}
return 0;
}
这个代码超时了,请问怎么控制?
程序运行超时 展开
#include <iostream>
#include <string>
using namespace std;
int main(){
string a;/////指定串,可根据要求替换
string b;////要查找的串,可根据要求替换
string c;
cin>>a>>b>>c;
int pos;
pos = a.find(b);////查找指定的串
while (pos != -1)
{
a.replace(pos,b.length(),c);////用新的串替换掉指定的串
pos = a.find(b);//////继续查找指定的串,直到所有的都找到为止
}
cout<<a<<endl;
return 0;
}
测试将test换成TEST成功!
如图所示!
我这个题目要处理到文件尾,就是多组测试,while循环必须要的。。
2.一般不要使用-1作为搜索不到字符串的判断依据,一般使用std::string::npos
3.一般不要使用int来接收搜索位置,一般使用size_type
4.尽量不要直接using namespace,那样的话,命名空间存在的意义也就不大了。
2018-07-18
是的
退出肯定是要的吧,你说读文件也是要判断是否到了文件的末尾,否则你这个程序不是要一直跑?
我刚刚试了一下你的程序没有什么运行超时啊。 你是不是其他程序调用这个程序》?
运行超时什么现象呢?显示什么呢?是不能输入了嘛?还是崩溃了?
是你问我还是我问你呢。。=,=。程序有运行时间那,不然提交就会超时,所以要优化一下!
中午休息后,参考并改进,vs2010通过测试
看看是不是您想要的效果:
// tesWeb.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string a;/////指定串,可根据要求替换
string b;////要查找的串,可根据要求替换
string c;
int pos;
while ( cin >> a>>b>>c){
pos = a.find(b);
while(pos != -1)
{
a.replace(pos++,b.length(),c);////用新的串替换掉指定的串
pos = a.find(b);
}
cout<< a.c_str() <<endl;
}
return 0;
}
谢谢