这里注意,函数的参数string类型 &号表示,里面的值会改变!!!
#include<iostream>
#include<vector>
#include<string>
#include<string.h>
using namespace std;
class CA
{
public:
enum{N=1001};
void run();
bool change(string &st);
private:
int n,m,count;
string na,ps;
struct users
{
string name;
string pass;
};
vector<users> u;
};
bool CA::change(string &st)
{
int i,flag=-1;
for(i=0;i<st.size();i++)
{
if(st[i]=='1')
{
flag=1;
st[i]='@';
}
else if(st[i]=='0')
{
flag=1;
st[i]='%';
}
else if(st[i]=='l')
{
flag=1;
st[i]='L';
}
else if(st[i]=='O')
{
flag=1;
st[i]='o';
}
}
return flag==1;
}
void CA::run()
{
cin>>n;
int i;
count=0;;
for(i=0;i<n;i++)
{
users a;
cin>>a.name>>a.pass;
if(change(a.pass))
{
count++;
u.push_back(a);
}
}
vector<users>::iterator it;
if(count>0)
{
printf("%d\n",count);
for(it=u.begin();it!=u.end();it++)
{
printf("%s %s\n",it->name.c_str(),it->pass.c_str());
}
}
else
{
if(n==1)
printf("There is %d account and no account is modified\n",n);
else
printf("There are %d accounts and no account is modified\n",n);
}
}
int main()
{
//freopen("test.txt","r",stdin);
CA *a=new CA;
a->run();
return 0;
}