Xây dựng lớp CMyString - Phạm Văn Quân
-Tạo 1 lớp CmyString với các phương thức so sánh :so sánh bằng,so sánh lớn hơn,so sánh nhỏ hơn,ghép chuỗi,trích xuất chuỗi từ đầu đến một vị trí bất kỳ
Thư viện khai báo :
#include <iostream.h>
#include <iomanip.h>
#include <string.h>
#include <assert.h>
#include <conio.h>
XÂY DỰNG LỚP CMYSTRING
Họ và tên :Phạm Văn Quân
MSSV :07520570
Class :K3C2
-Tạo 1 lớp CmyString với các phương thức so sánh :so sánh bằng,so sánh lớn hơn,so sánh nhỏ hơn,ghép chuỗi,trích xuất chuỗi từ đầu đến một vị trí bất kỳ…
Thư viện khai báo :
#include
#include
#include
#include
#include
Các hàm khai báo:
private:
char *Ptr; //con trỏ trỏ đến điểm bắt đầu của chuỗi
int Length; //Chiều dài của chuỗi
public:
CMyString(const char * = ""); //Chuyển đổi
CMyString(const CMyString &); //sao chép
~CMyString(); //Ham huy
const CMyString &operator=(const CMyString &);
//phép gán
CMyString &operator+=(const CMyString &);
int operator!() const;
int operator==(const CMyString &) const; //So sánh bằng
int operator!=(const CMyString &) const; //So sánh không bằng
int operator<(const CMyString &) const; //So sánh nhỏ hơn
int operator>(const CMyString &) const; //So sanh lớn hơn
int operator>=(const CMyString &) const; //So sánh >=
int operator<=(const CMyString &) const; //So sánh <=
char & operator[](int); //Trả về ký tự tham chiếu
CMyString &operator()(int, int); //Trả về một chuỗi con
int GetLength() const; //Lấy độ dài
friend ostream &operator<<(ostream &, const CMyString &);
friend istream &operator>>(istream &, CMyString &);
};
Thân chương trình:
//sao chep: Chuyen doi char * thanh CMyString
CMyString::CMyString(const char *S)
{
Length = strlen(S); //Gán độ dài ký
Ptr = new char[Length + 1];
assert(Ptr != 0);
strcpy(Ptr, S); //Gán S cho Ptr
}
//Copy chuỗi
CMyString::CMyString(const CMyString &Copy)
{
cout<<""<<Length;
Length = Copy.Length;
Ptr = new char[Length + 1];
assert(Ptr != 0);
strcpy(Ptr, Copy.Ptr);
}
//Hàm hủy
CMyString::~CMyString()
{
delete [] Ptr;
}
int CMyString::operator!=(const CMyString &Right) const
{
return strcmp(Ptr, Right.Ptr) != 0;
}
int CMyString::operator<(const CMyString &Right) const
{
return strcmp(Ptr, Right.Ptr) < 0;
}
int CMyString::operator>(const CMyString &Right) const
{
return strcmp(Ptr, Right.Ptr) > 0;
}
int CMyString::operator>=(const CMyString &Right) const
{
return strcmp(Ptr, Right.Ptr) >= 0;
}
int CMyString::operator<=(const CMyString &Right) const
{
return strcmp(Ptr, Right.Ptr) <= 0;
}
char &CMyString::operator[](int Subscript)
{
assert((Subscript>=0)&&(Subscript < Length));
return Ptr[Subscript];
}
CMyString &CMyString::operator()(int Index, int SubLength)
{
assert(Index >= 0 && Index = 0);
CMyString *SubPtr = new CMyString;
assert(SubPtr != 0);
if ((SubLength == 0) || (Index + SubLength > Length))
SubPtr->Length = Length - Index + 1;
else
SubPtr->Length = SubLength + 1;
delete SubPtr->Ptr;
SubPtr->Ptr = new char[SubPtr->Length];
assert(SubPtr->Ptr != 0);
strncpy(SubPtr->Ptr, &Ptr[Index], SubPtr->Length);
SubPtr->Ptr[SubPtr->Length] = '\0';
return *SubPtr;
}
int CMyString::GetLength() const
{
return Length;
}
ostream &operator<<(ostream &Output, const CMyString &S)
{
Output << S.Ptr;
return Output;
}
istream &operator>>(istream &Input, CMyString &S)
{
char Temp[100];
Input >> setw(100) >> Temp;
S = Temp;
return Input;
}
//Hàm chính
int main()
{
clrscr();
CMyString S1("Nice to");
CMyString S2(" meet") ;
CMyString S3;
cout << "S1 la: " << S1 <<endl;
cout << "S2 la: " << S2 << endl;
cout << "S3 la: " << S3 << endl;
cout << "-------------\n";
cout << "Ket qua so sanh giua 2 chuoi S2 va S1:" << endl;
cout << "S2 == S1 Ket qua " << (S2 == S1) << endl;
cout << "S2 != S1 Ket qua " << (S2 != S1) << endl;
cout S1 Ket qua " S1) << endl;
cout << "S2 < S1 Ket qua " << (S2 < S1) <<endl;
cout = S1 Ket qua " = S1) <<endl;
cout << "S2 <= S1 Ket qua " << (S2 <= S1) <<endl<<endl;
cout << "-------------\n";
cout << "Kiem tra cac ham voi !S3:" << endl;
if (!S3)
{
cout << "S3 dang rong; gan S3 = S1;" << endl;
S3 = S1;
cout << "S3 is " << S3 << endl;
}
cout << "-------------\n"<<endl;
cout <<"Ghep chuoi thu 2 vao chuoi thu nhat:"<<endl;
cout << "S1 += S2 Ket qua S1 = ";
S1 += S2;
cout << S1 << endl;
cout << "S1 += to you Ket qua" << endl;
S1 += " you";
cout << "S1 = " << S1 << endl;
cout << "-------------\n"<<endl;
cout << "Trich xau con tu S1 bat dau tu vi tri " ;
cout << " 0 den 14: S1(0,14) la: "<< S1(0, 14) << endl;
cout << "Trich xau con tu S1 bat dau tu vi tri " ;
cout << " 15 den het S1(15, 0) la: " << S1(15, 0) <<endl;
cout << "-------------\n"<<endl;
getch();
return 0;
}
File đính kèm:
Xây dựng lớp CMyString - Phạm Văn Quân.doc
String.rar

