字符串的编辑


《程序设计与基础》
对字符串实现

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];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容