Professional Documents
Culture Documents
6 - Lập trình C++ cơ bản - print
6 - Lập trình C++ cơ bản - print
Con trỏ đến dữ liệu nào thì tương ứng với kiểu dữ
liệu đó Có thể dùng con trỏ char* để thao tác với xâu
Xâu ký tự
Các hàm xử lý xâu ký tự dạng char[] và char* Hàm biến đổi từ xâu sang số
strcmp, stricmp, strncmp, strincmp: so sánh xâu atoi : từ xâu sang số nguyên
strchr, strstr: tìm kiếm kí tự, xâu con trong 1 xâu cho
atof: từ xâu sang số thực
trước
strtok: tách xâu thành các từ
Tham khảo cách sử dụng các hàm trong thư viện
strcpy: copy xâu #include <cstring>
strcat: ghép xâu
atoi, atof: chuyển xâu sang dạng số
trước
Sử dụng hàm strtok if(p!=string::npos)
Sử dụng istringstream {
}
Bài tập 3 Bài tập 4
Cho các câu lệnh của giao thức POP3 với cú pháp Cho định dạng câu lệnh SMTP là:
như sau “RCPT TO:<địa chỉ email>”
“USER tên\r\n”
Tham số
A) Lập trình thực hiện công việc sau
“PASS mật khẩu \r\n”
Nhập từ bàn phím 1 xâu ký tự biểu diễn câu lệnh trên
“RETR số thứ tự email \r\n”
Tách tên lệnh và địa chỉ email
“QUIT” ◼ In ra tên lệnh nếu lệnh đúng tên
Nhập tên, mật khẩu, số thứ tự email từ bàn phím ◼ In ra địa chỉ email nếu địa chỉ email đúng định dạng
<username>@huce.edu.vn
Tạo các xâu kí tự chứa lệnh theo cú pháp ở trên
◼ In ra thông báo lỗi nếu tên lệnh sai hoặc địa chỉ email không
In ra màn hình các xâu kí tự đó đúng cú pháp
Bài tập 5
B) Lập trình Cho một xâu kí tự chứa HTTP request như sau:
Nhập từ bàn phím tên username "GET / HTTP/1.1\r\nHost: ktht.nuce.edu.vn\r\nUser-
Tạo một xâu kí tự chứa câu lệnh Agent: curl/7.79.1\r\nAccept: */*\r\n\r\n“
“MAIL FROM:<username@huce.edu.vn>”
In ra màn hình xâu đã tạo
Hãy lập trình để tách xâu kí tự thành các thành phần
sau
Method, URL và version
Tách các trường thông tin Header và giá trị tương ứng
Đọc tệp
Đọc theo dòng, lưu vào xâu char [] :
6) Lập trình hướng đối tượng với C++ Hàm tạo và hàm hủy
Cách khai báo lớp Hàm tạo thực thi khi tạo đối tượng, hàm hủy thực
class ClassName thi khi hủy đối tượng
{
class ClassName
...
{
};
Khai báo dữ liệu thành phần và hàm thành phần ClassName();
class ClassName ClassName(int data);
{ ~ClassName();
int dataMember; …
int getDataMember(); };
…
};
Triển khai hàm thành phần
Triển khai hàm tạo và hàm hủy Triển khai hàm thành phần
ClassName::ClassName() int ClassName::getDataMember()
{
{
}
ClassName::ClassName(int data) return dataMember;
{ }
dataMember = data
}
ClassName::~ClassName()
{
}
{ Khi gọi hàm thành phần virtual, tùy thuộc vào kiểu
… lớp của đối tượng gọi hàm mà
};
Lớp con Derive sẽ kế thừa các thành phần thuộc phạm
vi public và protected của lớp cha Base
Ví dụ Ví dụ
class Base class Derive : public Base
{ {
virtual void sayHello(); // hàm virtual của Base void sayHello(); // hàm virtual của Derive
… …
}; };
void Base::sayHello() void Derive::sayHello()
{ {
cout << “Hello, I am Base”; cout << “Hello, I am Derive”;
} }
Ví dụ Bài 7
Gọi hàm virtual Một ứng dụng thi trực tuyến cần có tài khoản sinh viên
bao gồm những thông tin sau: mã sinh viên (string), họ tên,
Base base; trạng thái đăng nhập (true: đang đăng nhập, false: không
đăng nhập), địa chỉ IP của máy tính sinh viên (kiểu
Derive derive; unsigned long), thời gian đăng nhập (kiểu time_t), trạng
Base& ref = derive; thái nộp bài( true: đã nộp bài, false: chưa nộp bài), thời
gian nộp bài(kiểu time_t).
ref.sayHello(); // hàm sayHello() của lớp Derive Hãy khai báo lớp SinhVien tương ứng với mô tả trên
với các dữ liệu thành phần tương ứng và các hàm
get/set trên từng dữ liệu thành phần
Chương trình in ra : “Hello, I am Derive”
Viết một hàm thành phần để nhập dữ liệu mã sinh viên
và họ tên cho 1 đối tượng kiểu lớp SinhVien từ tệp văn
bản. Dữ liệu của tài khoản sinh viên trong tệp như sau:
123461<TAB>Hoang Phi Hung<CRLF>
Bài 8 Định dạng file User.conf
Hãy tổ chức 1 class có tên User, trong đó có thuộc tính là username
[user=tuan]
Tạo 1 class có tên là FTPUser thừa kế lớp User. Lớp FTPUser sẽ có root=E:\box\tuan
thêm các thuộc tính như đường dẫn thư mục gốc root, password và pass=jk0012~
phân quyền truy nhập read, write read=yes
write=yes
[user=hung]
Viết hàm tạo và các hàm thành phần get/set cho lớp FTPUser root=E:\box\hung
pass=hs1342*
Ứng dụng FTP Server lưu thông tin tài khoản User trong 1 file có tên read=yes
ftpusers.conf write=no
[user=mai]
root=E:\box\mai
Đọc dữ liệu của user từ file ftpusers.conf và lưu vào 1 vector có pass=ws1001$
phần tử là con trỏ User* (con trỏ được cấp phát động và thực sự read=no
trỏ đến đối tượng lớp FTPUser) write=yes
Tiếp
Duyệt bộ nhớ đệm sử dụng con trỏ
char buffer[512];
char* p = buffer; // con trỏ ở vị trí byte đầu tiên