Cứu bài MyString khi dùng toán tử
3 posters
Trang 1 trong tổng số 1 trang
Cứu bài MyString khi dùng toán tử
#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
- 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 : 35
Re: Cứu bài MyString khi dùng toán tử
//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
- 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 : 35
Chỉ biết sơ sơ thôi
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.
[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.
Chạy rất tốt bên dev-C
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.]
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.]
Re: Cứu bài MyString khi dùng toán tử
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
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
Re: Cứu bài MyString khi dùng toán tử
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.
Similar topics
» Sử dụng VC++ feature pack trong lập trình ứng dụng MFC
» vui vui vui.. Môn toán
» Chuyên đề toán học
» NỘI DUNG CHÍNH
» thuật toán Midpoint
» vui vui vui.. Môn toán
» Chuyên đề toán học
» NỘI DUNG CHÍNH
» thuật toán Midpoint
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
|
|