《程序設(shè)計(jì)與基礎(chǔ)》
對(duì)字符串實(shí)現(xiàn)
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——?jiǎng)h除"<<endl;
cout<<"輸入任務(wù)選項(xiàng)(1,2 or 3)"<<endl;
cin>>Task;
}
void contin()
{
cout<<"是否繼續(xù)?(y/n)"<<endl;
char answer;
cin>>answer;
if(answer=='n'||answer=='N') pd=false;
}
void Task1()
{
int begin,len;
cout<<"輸入起始位置"<<endl;
cin>>begin;
cout<<"輸入子串長(zhǎng)度"<<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<<"輸入刪除的結(jié)束位置"<<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)函數(shù)是將b字符串拼接到a的后邊带猴。
strcpy(a,b)函數(shù)是用b字符串覆蓋a原來(lái)的字符串吼畏。
char 字符串組 最后一個(gè)位置要用'\0'結(jié)束督赤。
*char ans=new int[200];