在校内bbs上看到的,拿来练手。
题目要求:输入一个字符串,然后在输入一个整数,就是替换字符串的次数,然后依次输入需要替换的字符串……
例如:
输入:asdfghjasdfghj
3
as->bnm
df->qwe
gh->yui
输出:bnmqweyuijbnmqweyuij
意思就是,将输入的字符串中,as替换成bnm,df替换成qwe,gh替换成yui,总共替换三次,注意次数是不限定的,可以是任意整数等。
看起来不难,但是我又是查书又是百度还是弄了一个小时。主要是String类函数用的不熟,另外家里面的机子用的是VC++6.0,可能是库太古老了, 不支持string类的迭代器和pushback函数,把我吓一跳。
代码如下:
#include <iostream>
#include <string>
using namespace std;
int main( )
{
string org;
int numb;
cin>>org;
cin>>numb;
for (int i = 0;i<numb;i++) {
string subs,next,input;
cin>>input;
int iter = 0;
for(;input[iter]!='-';iter++)
{
subs=(subs+input[iter]);
}
for(iter=iter+2;iter!=input.size();iter++)
{
next=(next+input[iter]);
}
int SubLong = subs.size();
while (1)
{
string::size_type position;
position =org.find_first_of(subs);
if (position == string :: npos) {
break;
}
org.replace(position,SubLong,next);
}
}
cout<<org<<endl;
return 0;
}