Hàm so sánh hai kí tụ trong c
Trong bảng mã ASCII có những kí tự in được và không in được. Trong chương này, chúng ta sẽ làm việc với các kí tự in được, nhiều nhất là các kí tự chữ cái và chữ số. Nếu muốn tìm hiểu kĩ hơn về bảng mã ASCII đầy đủ, bạn đọc có thể truy cập vào đường link sau: https://vi.wikipedia.org/wiki/ASCII Show 2. Kí tự và xâu kí tựTrong máy tính, thông tin được biểu diễn ở dạng số và dạng phi số. Chúng ta đã quá quen thuộc với thông tin dạng số, vậy còn dạng phi số? Đó là văn bản, hình ảnh, âm thanh,...Đối với lập trình thi đấu, thông tin dạng văn bản cũng xuất hiện thường xuyên không kém dạng số, và các ngôn ngữ lập trình đều cung cấp những kiểu dữ liệu để lưu trữ thông tin dạng văn bản. Có hai loại dữ liệu dạng văn bản thường gặp nhất là kiểu kí tự và kiểu xâu kí tự (nhiều kí tự ghép lại với nhau). Đối với kiểu kí tự, chúng ta có kiểu dữ liệu
3 để biểu diễn, còn xâu kí tự thì có hai cách khác nhau:
II. Thư viện
5 trong C++ Thư viện chuẩn của C++ cung cấp cho chúng ta một thư viện con
5 hỗ trợ việc lưu trữ các xâu kí tự (xâu kí tự) và rất nhiều các phương thức xử lý đi kèm. 1. Khai báo và truy cập các phần tử xâuĐể khai báo một xâu sử dụng thư viện
5, đầu tiên ta cần khai báo thư viện và không gian tên chứa nó bằng cú pháp:
Sau đó, khai báo một xâu bằng cú pháp:
Vẫn như thường lệ, {Tên_xâu} là một định danh do người dùng đặt ra, miễn là không trùng với từ khóa của hệ thống. Ta không cần khai báo độ dài của xâu, mà mỗi khi thêm một kí tự vào thì
9 sẽ tự động điều chỉnh độ dài của xâu cho vừa khớp với số lượng kí tự. Khi khai báo xâu, mặc định xâu đó sẽ là xâu rỗng (không có kí tự nào). Các kí tự trong xâu sẽ được đánh số từ 00. Để truy cập một vị trí trong xâu (với điều kiện vị trí đó hiện đang có kí tự hoặc đã được khởi tạo), ta dùng cú pháp:
Khá giống với mảng đúng không nào! Sau khi truy cập, mỗi vị trí trong xâu có thể được thao tác giống như một kí tự và kết hợp với các câu lệnh cũng như toán tử. Ví dụ, gán một biến cc bằng kí tự ở vị trí số 22 của xâu ss bằng cú pháp:
2. Cách nhập xuất một xâu2.1. Nhập xuất các biến kiểu
5 Khi nhập xuất một biến xâu kí tự, ta có thể coi xâu đó như một biến đơn và sử dụng hai câu lệnh
1 và
2 để nhập xuất. Cú pháp như sau:
Tuy nhiên, có một lưu ý khi sử dụng lệnh
1 đối với
9, đó là nếu như trong quá trình nhập liệu gặp phải dấu cách, thì việc nhập sẽ bị ngắt tại đó, cho dù người dùng có nhập thêm bao nhiêu kí tự đi chăng nữa thì xâu cũng sẽ chỉ lưu trữ phần ở phía trước dấu cách mà thôi. Cùng xem ví dụ dưới đây:
Nếu người dùng nhập vào một tên là
5, thì khi chạy chương trình ta sẽ thu được kết quả này:
Do đó, trong trường hợp cần đọc vào một xâu có cả dấu cách, ta sẽ sử dụng kết họp hai cú pháp:
Lệnh
6 sẽ thu nhận cả dòng dữ liệu nhập vào, bao gồm cả những dấu cách. Nó sẽ dừng việc đọc lại khi gặp kí tự
7 - tức là kí tự xuống dòng:
Lúc này, với tên nhập vào là
5, chạy chương trình sẽ thu được kết quả chính xác:
2.2. Nhập nhiều xâu kí tự hoặc chuyển đổi từ nhập số sang nhập xâu bằng
6 Nếu như chúng ta chỉ nhập một xâu kí tự duy nhất, thì sẽ không có điều gì đáng lưu tâm cả, bạn chỉ cần lựa chọn giữa
1 và
1 tùy vào việc xâu bạn nhập vào có dấu cách hay không. Tuy nhiên, khi dữ liệu đầu vào có nhiều xâu kí tự khác nhau, hoặc khi dữ liệu đầu vào bao gồm cả số và xâu, thì câu chuyện sẽ khác đi. Về bản chất, khi các bạn nhập bất cứ thứ gì vào từ bàn phím, chúng sẽ được đẩy vào bộ nhớ đệm, rồi hàm
1 sẽ "đọc" dữ liệu ra từ bộ nhớ đệm rồi nạp vào biến. Chẳng hạn, nếu như các bạn nhập vào một số là 123,123, rồi ấn phím
3 (chính là kí tự xuống dòng), thì 123123 và kí tự
7 sẽ được đẩy vào bộ nhớ đệm trước, sau đó hàm
1 mới "quét qua" dữ liệu trong bộ nhớ đệm và đưa nó vào biến phía sau. Trong trường hợp biến phía sau là một biến kiểu số, thì chỉ có các chữ số mới được ghi nhận vào biến, còn những kí tự như
6 và
7 sẽ bị bỏ qua, nhờ đó nên trong trường hợp đọc nhiều số khác nhau, chương trình vẫn sẽ phân tách đúng các số, dù các bạn dùng dấu cách hay dấu xuống dòng. Tuy nhiên, nếu như theo sau số nhập vào là một kí tự, hoặc một xâu kí tự, thì nó sẽ đọc được cả kí tự
7 (vì kí tự
7 chỉ bị bỏ qua chứ nó vẫn còn tồn tại trong bộ nhớ đệm), dẫn đến xâu kí tự sẽ bị đọc sai. Cùng xem một ví dụ dưới đây:
0 Nếu như nhập vào dữ liệu là id=1id = 1 và name=name=
0, thì khi chạy chương trình các bạn sẽ thấy kết quả in ra chỉ có như sau:
1 Nguyên do là vì, khi nhập xong số 1,1, chúng ta sẽ nhấn
3 hoặc dấu cách. Biến idid chỉ có thể đọc được số 1,1, còn kí tự dấu cách hoặc xuống dòng vẫn nằm lại trong bộ nhớ đệm. Hàm
2 tiếp theo sẽ đọc luôn cả những kí tự đó, dẫn đến hai trường hợp sau:
include
include using namespace std; int main() { }
include
include using namespace std; int main() { }
getline(cin, {Tên_xâu});
string {Tên_xâu};
getline(cin, {Tên_xâu});
string {Tên_xâu};
string {Tên_xâu};
0 hoặc
1 đều được.
include
include using namespace std; int main() { } include
include using namespace std; int main() { }
cin >> {Tên_biến_xâu}; // Nhập vào một biến xâu.
cout << {Tên_biến_xâu}; // Viết ra một biến xâu.
include
include using namespace std; int main() { }
string {Tên_xâu};
string {Tên_xâu};
string {Tên_xâu};
string {Tên_xâu};
string {Tên_xâu};
include
include using namespace std; int main() { }
{Tên_xâu}[{Vị_trí}]
{Tên_xâu}[{Vị_trí}]
include
include using namespace std; int main() { }
include
include using namespace std; int main() { }
Tên vừa nhập là: Vũ Quế Lâm
Tên vừa nhập là: Vũ Quế Lâm
Tên vừa nhập là: Vũ Quế Lâm
Tên vừa nhập là: Vũ Quế Lâm
Tên vừa nhập là: Vũ Quế Lâm
Tên vừa nhập là: Vũ Quế Lâm
{Tên_xâu}[{Vị_trí}]
{Tên_xâu}[{Vị_trí}]
Tên vừa nhập là: Vũ Quế Lâm
{Tên_xâu}[{Vị_trí}]
{Tên_xâu}[{Vị_trí}]
{Tên_xâu}[{Vị_trí}]
getline(cin, {Tên_xâu});
getline(cin, {Tên_xâu});
string {Tên_xâu};
string {Tên_xâu};
cin >> {Tên_biến_xâu}; // Nhập vào một biến xâu.
cout << {Tên_biến_xâu}; // Viết ra một biến xâu.
{Tên_xâu}[{Vị_trí}]
string {Tên_xâu};
string {Tên_xâu};
string {Tên_xâu};
cin >> {Tên_biến_xâu}; // Nhập vào một biến xâu.
cout << {Tên_biến_xâu}; // Viết ra một biến xâu.
cin >> {Tên_biến_xâu}; // Nhập vào một biến xâu.
cout << {Tên_biến_xâu}; // Viết ra một biến xâu.
string {Tên_xâu};
cin >> {Tên_biến_xâu}; // Nhập vào một biến xâu.
cout << {Tên_biến_xâu}; // Viết ra một biến xâu.
{Tên_xâu}[{Vị_trí}]
string {Tên_xâu};
{Tên_xâu}[{Vị_trí}]
char c = s[2];
char c = s[2];
char c = s[2];
string {Tên_xâu};
char c = s[2];
char c = s[2];
cin >> {Tên_biến_xâu}; // Nhập vào một biến xâu.
cout << {Tên_biến_xâu}; // Viết ra một biến xâu.
string {Tên_xâu};
string {Tên_xâu};
getline(cin, {Tên_xâu});
string {Tên_xâu};
string {Tên_xâu};
char c = s[2];
char c = s[2];
char c = s[2];
char c = s[2];
char c = s[2];
include
include using namespace std; int main() { }
6 để nhập xâu. |