Cứu bài MyString khi dùng toán tử

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Cứu bài MyString khi dùng toán tử

Bài gửi by htn111 on 19/11/09, 09:59 pm

#include "iostream"
using namespace std;
#include "MyString.h"
#include "string.h"

// Hàm hủy
String::~String()
{ delete s;
}

// Hàm thiết lập 1 tham số
String::String(char *s1)
{ length = strlen(s1);
s = new char[length + 1];
strcpy(s, s1);
}

// Hàm thiết lập sao chép
String::String(String &s1)
{ length = s1.length;
s = new char[length + 1];
strcpy(s, s1.s);
}

// Nạp chồng toán tử
// Toán tử gán
String & String::operator =(String &s1)
{ if(this != &s1)
{ delete s;
length = s1.length;
s = new char[length + 1];
strcpy(s, s1.s);
}
else
cout<<" Hai chuoi la 1, nen khong sao chep"<<endl;
return *this;
}

// Toán tử Nhập - hàm Nhập
istream & operator >> (istream &d, String &s1)
{ cout<<"Nhap chuoi: ";
d>>s1.s;
return d;
}

// Toán tử Xuất
ostream & operator << (ostream &h, String &s1)
{ h<<"Hien thi chuoi: "<<endl;
h<<s1.s<<endl;
return h;
}


// H dùng như vậy, mà nó báo đủ thứ hết trơn

htn111
VIP mem
VIP mem

Tổng số bài gửi : 28
Số điểm : 70
Số lần được cám ơn : 15
Ngày đến diễn đàn: : 26/08/2009
Tuổi : 28

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Cứu bài MyString khi dùng toán tử

Bài gửi by htn111 on 19/11/09, 10:06 pm

//MyString.h

#pragma once
#include "string.h"

class String
{
    private:
char *s;
int length; // các thuộc tính
    public:
String(char *s1 = ""); // Hàm thiết lập 1 tham số
String (String &s1); // hàm thiết lập sao chép
~String(); // Hàm hủy
String & operator = (String &s1); // Gán chuỗi A = B
friend ostream & operator <<(ostream &, String &s);
friend istream & operator >> (istream &, string &s);
};

htn111
VIP mem
VIP mem

Tổng số bài gửi : 28
Số điểm : 70
Số lần được cám ơn : 15
Ngày đến diễn đàn: : 26/08/2009
Tuổi : 28

Xem lý lịch thành viên

Về Đầu Trang Go down

Chỉ biết sơ sơ thôi

Bài gửi by anbinhtrong on 20/11/09, 01:21 am

Giả sử nếu T viết thế này:
[code] friend ostream & operator <<(ostream &o, String &s1){ return o<
Một cách khách quan hơn: là không dùng công cụ của MS mà xài DEV-C, thử xem có bị báo lỗi không?
Tại sao dùng hàm bạn bị báo lỗi trong VC 6, t sẽ tìm hiểu sau.
Chuỗi nên nhập bằng ...getline(s1.s,sz) nhé.
Delete [] s;//Delete s- có vẻ không ổn.
//----------------------------------
Thật sự khi viết bài này, T không có 1 cuốn C++ nào trong tay, lại càng chưa xem và chưa từng viết về operator, nhất là >>, bởi vậy nên có thể có gì đó sai.

===== Thành viên Forum Thien Than CNTT ====
The only way to begin is to begin.

anbinhtrong
Mod
Mod

Tổng số bài gửi : 77
Số điểm : 142
Số lần được cám ơn : 32
Ngày đến diễn đàn: : 18/10/2009
Tuổi : 27
Đến từ : BT

Xem lý lịch thành viên http://khoahockithuat.blogspot.com

Về Đầu Trang Go down

Chạy rất tốt bên dev-C

Bài gửi by anbinhtrong on 20/11/09, 07:13 am

Ok, thật sự không hiểu lắm, bạn về thử xem lại vài vấn đề nhé: Có lẽ là do cách đặt tên và sử dụng using namespace std;
Mình test bằng dev-C:
Nếu sử dụng std, ra rất nhiều lỗi, cụ thể là 77 lỗi.
Nếu sử dụng dạng iostream.h, không có lỗi nào hết, chương trình chạy đúng 100%. Từ đó mình rút ra, có thể trong thư viện chuẩn std (không biết, mình tự gọi như vậy) có hàm nào trùng tên chăng? Thật sự mình chưa nắm rõ istream và ostream.
Bữa nào bạn kiếm tài liệu về i&ostream rồi up lên cho mình tham khảo thử xem. [You must be registered and logged in to see this image.]

===== Thành viên Forum Thien Than CNTT ====
The only way to begin is to begin.

anbinhtrong
Mod
Mod

Tổng số bài gửi : 77
Số điểm : 142
Số lần được cám ơn : 32
Ngày đến diễn đàn: : 18/10/2009
Tuổi : 27
Đến từ : BT

Xem lý lịch thành viên http://khoahockithuat.blogspot.com

Về Đầu Trang Go down

Re: Cứu bài MyString khi dùng toán tử

Bài gửi by nth on 21/11/09, 05:14 am

kì vậy????????
mình thấy thư viện #include "iostream"
using namespace std
là y như thư viện istream và ostream mà, sao kì vậy ha.. Vì cái đó mình dùng VS2008 nên không thể include thư viện iostream.h được

===== Thành viên Forum Thien Than CNTT ====
Nothing!

(~~/)
(~'.'~)
(_(__)~~

nth
Admin
Admin

Tổng số bài gửi : 550
Số điểm : 1113
Số lần được cám ơn : 33
Ngày đến diễn đàn: : 01/08/2009
Tuổi : 28
Đến từ : Thiên Đường

Xem lý lịch thành viên http://thuhuong.hot4um.com

Về Đầu Trang Go down

Re: Cứu bài MyString khi dùng toán tử

Bài gửi by anbinhtrong on 21/11/09, 11:22 am

Mình xài dev-C, cả 2 cách đều viết được. Về cấu trúc thì không sai đâu, có thể do lỗi biên dịch, không có chuyện dev-C dịch được mà VS 2008 lại dịch không được.

===== Thành viên Forum Thien Than CNTT ====
The only way to begin is to begin.

anbinhtrong
Mod
Mod

Tổng số bài gửi : 77
Số điểm : 142
Số lần được cám ơn : 32
Ngày đến diễn đàn: : 18/10/2009
Tuổi : 27
Đến từ : BT

Xem lý lịch thành viên http://khoahockithuat.blogspot.com

Về Đầu Trang Go down

Re: Cứu bài MyString khi dùng toán tử

Bài gửi by Sponsored content Today at 07:37 pm


Sponsored content


Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết