Viết chương trình xây dựng lớp xâu ký tự gồm các thành phần

Đề bài: Viết chương trình xây dựng lớp xâu ký tự, có các thành phần sau :

  • Các thuộc tính : char * str, int length
  • Hàm tạo không tham số
  • Hàm tạo một tham số ( char * s)
  • Hàm nhập xâu.
  • Hàm hiển thị xâu và độ dài xâu
  • Hàm nối xâu để cộng hai xâu (xaukytu s)
  • Hàm huỷ: Hủy bộ nhớ đã cấp phát cho xâu.

Chương trình chính:

  • Khai báo đối tượng lớp xâu ký tự s1 bằng hàm khởi tạo không tham số, nhập xâu
    s1, hiển thị xâu s1 ra màn hình
  • Khai báo đối tượng lớp xâu ký tự s2 bằng hàm khởi tạo 2 tham số, hiển thị xâu s2
    ra màn hình
  • Nối 2 xâu s1, s2 và hiển thị kết quả ra màn hình.

mọi người có thể giúp e cách nhập xuất char* str kia kiểu gì được không ạ em tìm hiểu mãi mà không ra cảm ơn mọi người ạ

code em làm được 1 ít nhưng không chạy được đây ạ

#include <iostream>
#include <cmath>
using namespace std;
class xaukt
{
	const char* str;
	int len;
	public:
		xaukt();
		xaukt(const char* s);
		void nhap();
		void xuat();
		void congxau();
};
xaukt::xaukt(){
	}
xaukt::xaukt(const char* s){
	s = str;
	}
void xaukt::nhap(){
	cout<<"Nhap xau: "; cin>>str;
}
void xaukt::xuat(){
	cout<<*str;
}
int main ()
{
	xaukt y;
	y.nhap();
	y.xuat();
}

Mình nghĩ bạn đưa class của bạn đã tạo lên đây. Nêu vấn đề nó gặp khiến không thể chạy được như bạn mong muốn.

1 Like
#include <iostream>
#include <cmath>
using namespace std;
class xaukt
{
	const char* str;
	int len;
	public:
		xaukt();
		xaukt(const char* s);
		void nhap();
		void xuat();
		void congxau();
};
xaukt::xaukt(){
	}
xaukt::xaukt(const char* s){
	s = str;
	}
void xaukt::nhap(){
	cout<<"Nhap xau: "; cin>>str;
}
void xaukt::xuat(){
	cout<<*str;
}
int main ()
{
	xaukt y;
	y.nhap();
	y.xuat();
}

đây bác ạ

  1. Bạn khai báo/triển khai sai phương thức congxau(). Đề ghi mẫu có 1 tham số, chính là kiểu của lớp hiện tại. Nên đúng phải là void congxau(xaukt s), cũng có thể là xaukt congxau(xaukt s) nếu trả về xâu mới thay vì thay đổi xâu hiện tại.
  2. Bạn chưa hề dùng đến int len. Khi char* str thay đổi thì bạn cũng phải gán len bằng độ dài hiện tại của str.
  3. Để nhập chuỗi (xâu) thì nên dùng getline(). http://www.cplusplus.com/reference/istream/istream/getline/

Lưu ý: trong C++ có 2 getline(), một dùng cho string (<string>) và một cho char* (<iostream>).

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?