C++编程,查找字符串子串并替换。 10

#include<iostream>#include<string>usingnamespacestd;intmain(){stringa;/////指定串,可根据要求替... #include <iostream>
#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;
}

这个代码超时了,请问怎么控制?
程序运行超时
展开
 我来答
uiazhaochao
推荐于2017-09-08 · TA获得超过618个赞
知道小有建树答主
回答量:251
采纳率:100%
帮助的人:80.6万
展开全部

#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循环必须要的。。
super_admi
2012-11-14 · TA获得超过1126个赞
知道小有建树答主
回答量:1169
采纳率:0%
帮助的人:920万
展开全部
1.一般不要使用cin作为循环退出的判断依据,除非你非常明白它,并且确认必须要使用它。
2.一般不要使用-1作为搜索不到字符串的判断依据,一般使用std::string::npos
3.一般不要使用int来接收搜索位置,一般使用size_type
4.尽量不要直接using namespace,那样的话,命名空间存在的意义也就不大了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-07-18
展开全部
数据太大会超时的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
z490721123
2012-11-13 · 超过25用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:68.2万
展开全部
while(cin>>a>>b>>c) 这句,你是要一直循环输入啊? 没有退出的?
追问
是的
追答
退出肯定是要的吧,你说读文件也是要判断是否到了文件的末尾,否则你这个程序不是要一直跑?
我刚刚试了一下你的程序没有什么运行超时啊。 你是不是其他程序调用这个程序》?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hevinn
2012-11-13 · TA获得超过102个赞
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:86.6万
展开全部
超时啦?什么意思?
运行超时什么现象呢?显示什么呢?是不能输入了嘛?还是崩溃了?
追问
是你问我还是我问你呢。。=,=。程序有运行时间那,不然提交就会超时,所以要优化一下!
追答

中午休息后,参考并改进,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;
}

谢谢

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式