⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sy3.cpp

📁 字符串的相关操作
💻 CPP
字号:
#include <iostream.h>
#include <conio.h>
#include <string.h>
class String
{public:
     String(){};
     ~String(){};
     String SubString(int pos,int num);
     void Insert(String t,int pos);
     void Delete(int pos,int num);
     void Creat();
     void Display();
  private:
     char *str;
     int size;
 };
 //生成新字符串函数
void String:: Creat()
 {char s[70];  
  cin>>s;
    size=strlen(s);
    str=new char[size];
    if(str==0)  cout<<"没有申请到空间!";
    strcpy(str,s);
 }
//输出
void String::Display()
{ int i;
  for(i=0;i<size;i++)  cout<<str[i];
  cout<<endl;
}
//求子串
String String::SubString(int pos,int num)
{ String temp;
  int left=size-pos+1;
  char *p,*q;
  if(pos>size+1)   
	  cout<<"!!!!超过字符串长度";
  if(num>left) 
	  num=left;
   //delete temp.str;
  temp.str=new char[num+1];
  if(temp.str==0)   
	  cout<<"error"<<endl;
  p=temp.str;
  for(int i=pos-1;i<pos+num-1;i++)
  {  
	  q=&str[i];
	  *p=*q; 
	  p++;
	  q++;
  }
  *p=0;
  temp.size=num;
  return temp;
}
//插入运算:在串对象s的pos位置后插入一个串t
void String::Insert(String t,int pos)
{
	int n,m=t.size,i;
	char *q;
	pos=pos-1;
	q=&str[size];
	for(i=size;i>=pos;i--) 
	{ 
		*(q+m)=*q;  
		q--;
	}
	for(i=0;i<m;i++)
		str[pos+i]=t.str[i];
	size=size+t.size;
}
//删除 :删除串中的一个子串
void  String:: Delete(int pos,int num)
{ char *q;
  int m=size-pos;
  pos--;
  for(int i=0;i<m;i++)  {int j=pos+i;
                         str[j]=str[j+num];
                         }
  size=size-num;
}
//主函数
int main(int argc, char* argv[])
{  int pos,num,k;
   String s,s1,t;
   do{  cout<<"\n\n    1.生成字符串"  ;
        cout<<"\n\n    2.取子串";
        cout<<"\n\n    3.插入子串s1";
        cout<<"\n\n    4.删除子串";
        cout<<"\n\n    5.结束程序";
        cout<<"\n******************************** ";
        cout<<"\n    请输入你的选择(1,2,3,4,5)";  cin>>k;
  switch(k){
       case 1:{cout<<"请输入一个字符串:";
               s.Creat();
               cout<<"字符串为:       ";     s.Display();
              }break;
       case 2:{ cout<<"请输入子串的截取位置pos及子串长度num"<<endl;
                cin>>pos>>num;
                t=s.SubString(pos,num);
                cout<<"你所取的子串为:  ";  t.Display();
               }break;
       case 3:{ cout<<"请输入子串插入位置pos"<<endl;
                cin>>pos;
                cout<<"请输入要插入的子串:  ";   s1.Creat();
                s.Insert(s1,pos);
                cout<<"插入后的字符串为:   ";  s.Display();
              }break;
       case 4:{ cout<<"请输入要删除子串的开始位置pos及子串长度num"<<endl;
               cin>>pos>>num;
               s.Delete(pos,num);
               cout<<"删除后的字符串为:   ";
               s.Display();
             }break;
     default:break;
  } //switch
     cout<<"\n--------------------------------- ";
}while(k>=1&&k<5);
  cout<<"\n          再见!";
  cout<<"\n     按任意键,返回。";
  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -