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>

 

 

doc5 trang | Chuyên mục: Lập Trình Hướng Đối Tượng | Chia sẻ: dkS00TYs | Lượt xem: 1481 | Lượt tải: 0download
Tóm tắt nội dung Xây dựng lớp CMyString - Phạm Văn Quân, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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:

  • docXây dựng lớp CMyString - Phạm Văn Quân.doc
  • rarString.rar