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