《程序设计与基础》
对字符串实现
1# 取子串
2# 插入
3# 删除
#include <iostream>
using namespace std;
const int MAXlen=200;
char *orgin=new char[MAXlen];
int Task;
bool pd=true;
void orgin_write();
void Input_Task();
void Task1();
void Task2();
void Task3();
char *Substr(char *orgin,int begin,int len);
void Insert(char *orgin,int pos, char *in);
void Delete(char *orgin,int begin,int end);
void contin();
int main()
{
orgin_write();
while(pd)
{
Input_Task();
switch(Task)
{
case 1:
Task1();
break;
case 2:
Task2();
break;
case 3:
Task3();
break;
}
cout<<endl;
contin();
cout<<endl;
}
system("pause");
return 0;
}
void orgin_write()
{
cout<<"输入初始字符串"<<endl;
cin>>orgin;
}
void Input_Task()
{
cout<<"Task1——取子串"<<endl;
cout<<"Task2——插入"<<endl;
cout<<"Task3——删除"<<endl;
cout<<"输入任务选项(1,2 or 3)"<<endl;
cin>>Task;
}
void contin()
{
cout<<"是否继续?(y/n)"<<endl;
char answer;
cin>>answer;
if(answer=='n'||answer=='N') pd=false;
}
void Task1()
{
int begin,len;
cout<<"输入起始位置"<<endl;
cin>>begin;
cout<<"输入子串长度"<<endl;
cin>>len;
cout<<Substr(orgin,begin,len)<<endl;
}
void Task2()
{
int pos;
char *in=new char[MAXlen];
cout<<"输入插入位置"<<endl;
cin>>pos;
cout<<"输入插入的字符串"<<endl;
cin>>in;
Insert(orgin,pos,in);
cout<<orgin<<endl;
}
void Task3()
{
int begin,end;
cout<<"输入删除的起始位置"<<endl;
cin>>begin;
cout<<"输入删除的结束位置"<<endl;
cin>>end;
Delete(orgin,begin,end);
cout<<orgin<<endl;
}
char *Substr(char *orgin,int begin,int len)
{
begin--;
char *ans=new char[MAXlen];
for(int i=begin;i<begin+len;i++) ans[i-begin]=orgin[i];
ans[len]='\0';
return ans;
}
void Insert(char *orgin,int pos, char *in)
{
char *ans=new char[MAXlen];
ans=Substr(orgin,1,pos);
strcat(ans,in);
strcat(ans,Substr(orgin,pos+1,strlen(orgin)-pos));
strcpy(orgin,ans);
}
void Delete(char *orgin,int begin,int end)
{
char *ans=new char[MAXlen];
ans=Substr(orgin,1,begin-1);
strcat(ans,Substr(orgin,end+1,strlen(orgin)-end));
strcpy(orgin,ans);
}
strcat(a,b)函数是将b字符串拼接到a的后边。
strcpy(a,b)函数是用b字符串覆盖a原来的字符串。
char 字符串组 最后一个位置要用'\0'结束。
*char ans=new int[200];