#include<iostream.h>
#include<assert.h>
#include<string.h>
class string
{public:
void show() //顯示字串
{
cout<<str<<endl;
}
int length() //求長度
{
return size;
}
string insert(char*s,int pos)//字串插入
{
string temp;
temp.size=strlen(s)+size;
for(int i=0;i<pos;i++)
{
temp.str[i]=str[i];
}
for(int j=0;j<pos+strlen(s);j++)
{
temp.str[pos+j]=s[j];
}
for(int k=0;k<temp.size;k++)
temp.str[pos+strlen(s0=k]=str[pos+k];
string replace(char*s,char*p,char*t)//字串替換
string::size_type pos=0;
string::size_type a=p.size();
string::size_type b=t.size();
while((pos=s.find(p,pos))!=string::npos)
s.erase(pos,a);
s.insert(pos,t);
pos+=b;
void Delete(char*ch[],int n)//字串洗掉
int len = strlen(ch);//得到字串的長度(自帶函式在#include<string.h>中)
for(int i=0;i<len;i++)
if(i>=n)
ch[i-1]=ch[i];//把n-1后的前面字符全部替換為為后面的字符
char *str = ch;//用str拷貝ch
str[len-1] = '\0';//把最后一位變為字串結束標志,因此導致記憶體泄漏,因為后面還有一個'/0'
ch = new char[len-1];//新開辟一塊空間
for(int i;i<=len-1;i++)//把str"/0/0"第二個/0之前的字符全部拷貝到ch中
ch[i] = str[i];
delete char*str;//把之前的空間釋放
int index(char *s, char *t)//字串的查找
if (!s || !t) return -1;
char *p = strstr(s,t);
if (!p) return -1;
return p - s;
void Strcat(char*z)//字串的連接
char*a;
a=new char[strlen(z)+length];
strcpy(a,str);
strcat(a,z);
str=a;
cout<<str<<endl;
int main()
{
while (a!=0)
{
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<<"0.回傳"<<endl;
cin>>a;
switch(a)
{
case 0:
case 1:cout<<"請輸入字串:"<<endl;
char*s1=nem char;
cin>>s1;
break;
case 2:cout<<"你輸入的字串為:"<<endl;
String s1;
s1.show();
break;
case 3:
cout<<"你輸入的字串長度為:"<<s1.length()<<endl;
break;
case 4:
cout<<"請輸入插入位置:";
int pos;
cin>>pos;
cout<<"輸入你想插入的字串:";
char*s2=nem char;
cin>>s2;
string s1=s1.insert(st2.pos);
cout<<"新的字串為:";
s1.show();
break;
case 5:
cout<<"請輸入替換內容:";
char*s4=new char;
cin>>s4;
cout<<"請輸入被替換部分:";
char*s5=nem char;
cin>>s5;
string s1=replace(s1,s5,s4);
cout<<"新的字串為:";
s1.show();
break;
case 6:
cout<<"請輸入你要洗掉的字符位數:";
cin>>a;
string s1=delete(s1,a);
cout<<"新的字串為:";
s1.show();
break;
case 7:
cout<<"請輸入要查找的字串:";
char*s5=new char;
cin>>s5;
string s1=index(s1,s5);
cout<<"新的字串為:";
s1.show();
break;
case 8:
cout<<"請輸入另一個字串:";
char*s6=new char;
cin>>s6;
s1=strcat(s1,s6);
cout<<"連接后的字串為:";
s1.show();
break;
default:cout<<"操作錯誤!請輸入正確序號!"<<endl;
}
};
return 0;
}
錯誤:233.cpp
D:\vc++\MyProjects\123\233.cpp(135) : error C2958: the left parenthesis '(' found at 'D:\vc++\MyProjects\123\233.cpp(27)' was not matched correctly
D:\vc++\MyProjects\123\233.cpp(139) : fatal error C1075: end of file found before the left brace '{' at 'D:\vc++\MyProjects\123\233.cpp(15)' was matched
執行 cl.exe 時出錯.
uj5u.com熱心網友回復:
按照這種格式,menu單獨一個函式顯示#include "stdafx.h"
#include "List.h"
#include <stdlib.h>
#include <iostream>
using namespace std;
int Menu()
{
int num;
cout << "********************" << endl;
cout << "* 1 ADD *" << endl;
cout << "* 2 DEL *" << endl;
cout << "* 3 SEARCH *" << endl;
cout << "* 4 SHOW *" << endl;
cout << "* 5 EXIT *" << endl;
cout << "********************" << endl;
cout << "input the num:"; cin >> num;
return num;
}
int _tmain(int argc, _TCHAR* argv[])
{
List mylist;
mylist.Readfile();
int num = Menu();
bool flags = 1;
while (flags)
{ switch (num)
{
case 1: mylist.Add(); break;
case 2: mylist.Del(); break;
case 3: mylist.Search(); break;
case 4: mylist.Showfile(); break;
case 5: cout << "Bye.\n"; return 0;
default: cout<<"沒有該選項請重輸!\n"; break;
}
cout << "請輸入選項:\n";
cin >> num;
}
system("pause");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/60151.html
標籤:基礎類
