代碼如下:
#include<iostream>
#include<string>
#define Maxsize 50
using namespace std;
/************************************/
class String//String類
{
public:
String();//建構式 (進行初始化)
~String();//解構式 (回收處理)
void CreateString();//創建串
void ShowString();//顯示串
void Modify(int place_1,int place_2,char str2[20]);//修改串
void Insert(int place_3,char str3[20]);//插入串
void Delete(int place_4,int place_5);//洗掉子串
void FindString(char str4[20]);//查找串
int StringLength();// 串長
private:
char *Str;
int Length;
};
/************************************/
String::String()
{
Str=new char[Maxsize];
}
/************************************/
String::~String()//解構式 (回收處理)
{
delete []Str;
cout<<"該串已經被洗掉"<<endl;
}
/************************************/
void String::CreateString()//創建串
{
int i=0;
char ch;
while(ch=getchar()!=EOF)
{
if(ch!=13)
cin.get(Str[i]);
i++;
}
Length=i;
}
/************************************/
void String::ShowString()
{
int i;
if(Length<=0)
cout<<"串為空!"<<endl;
cout<<"當前順序串為:";
for(i=0;i<Length;i++)
cout<<Str[i];
cout<<endl;
}
/************************************/
void String::Modify(int place_1,int place_2,char str2[20])
{
int i;
i=place_2-place_1;
Str.replace(place_1,i,str2[20]);
}
/************************************/
void String::Insert(int place_3,char str3[20])
{
Str.insert(place_3,str3[20]);
}
/************************************/
void String::Delete(int place_4,int place_5)
{
int i;
i=place_5-place_4;
Str.erase(place_4,i);
}
/************************************/
void String::FindString(char str4[20])
{
int i,f;
f=Str.find(str4[20]);
if(f<Length)
cout<<"已找到!位置為:"<<f<<endl;
else
cout<<"未找到!"<<endl;
}
/************************************/
int String::StringLength()
{
return Length;
}
/************************************/
void Menu()
{
system("cls");
cout<<"順序串基本功能選單"<<endl;
cout<<"=========="<<endl;
cout<<"1.建立順序串(僅限單行的字串,建議不用漢字。)"<<endl;
cout<<"2.顯示串"<<endl;
cout<<"3.修改串"<<endl;
cout<<"4.插入串"<<endl;
cout<<"5.洗掉串"<<endl;
cout<<"6.查找串"<<endl;
cout<<"7.求串長度"<<endl;
cout<<"8.結束程式"<<endl;
cout<<"=========="<<endl;
}
/************************************/
//place_1、place_2用于修改
//place_3用于插入
//place_4用于洗掉
//str2(修改)、str3(插入)、str4(查找)
int main()
{
int place_1,place_2,place_3,place_4,place_5;
char str2[20],str3[20],str4[20];
int cho;
String string(char str[20],int length);
while(1)
{
Menu();
do
{ cout<<"請輸入選擇:";
cin>>cho;
}while(cho<1||cho>8);
switch(cho)
{
case 1:
cout<<"請輸入需要創建的字串并以Ctrl+Z結束!"<<endl;
string.CreateString();
cout<<"該字符創建成功!"<<endl;
break;
case 2:
string.ShowString();
break;
case 3:
cout<<"請輸入需要修改串的初位置:";
cin>>place_1;
cout<<endl;
cout<<"請輸入需要修改串的末位置:";
cin>>place_2;
cout<<"請輸入想要修改成的串:";
cin>>str2;
string.Modify(place_1,place_2,str2[20]);
cout<<"插入成功!"<<endl;
break;
case 4:
cout<<"請輸入插入的位置:";
cin>>place_3;
cout<<endl;
cout<<"請輸入插入的子串:";
cin>>str3[20];
string.Insert(place_3,str3[20]);
break;
case 5:
cout<<"請輸入洗掉的初位置:";
cin>>place_4;
cout<<endl;
cout<<"請輸入洗掉的末位置:";
cin>>place_5;
string.Delete(place_4,place_5);
cout<<"洗掉成功!"<<endl;
break;
case 6:
string.FindString(str4[20]);
break;
case 7:
cout<<"當前串的長度為:"<<string.StringLength()<<endl;
break;
case 8:
return 0;
}
system("pause");
cin.get(); //從指定的輸入流中提取一個字符,防止螢屏一閃而過
}
}
uj5u.com熱心網友回復:
String aString(char str[20],int length);string是標準庫的類,名字沖突了。
uj5u.com熱心網友回復:
我換個物件名也是一樣的報錯,可能真正的問題還不是這個吧!uj5u.com熱心網友回復:
代碼中所有的string都改成aString 試試,注意大小寫匹配,不要把String也改了。uj5u.com熱心網友回復:
還是那個樣子!
uj5u.com熱心網友回復:
把報的錯誤。貼上來。。看看轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/53534.html
標籤:基礎類
上一篇:多螢屏顯示的問題
下一篇:陣列問題
