[Tự học C++] Phần 9: Kiến thức về Xâu kí tự trong C++
7/10/2023 10:26:24 AM
tientran21121 ...

I. Dữ liệu dạng văn bản

1. Bảng kí tự ASCII

ASCII (American Standard Code for Information Interchange) là một bảng mã chuẩn được sử dụng để trao đổi thông tin trong hệ thống máy tính. Bảng mã ASCII gồm 256 kí tự được đánh số từ 0 đến 255. Bảng mã này dựa trên bảng chữ cái Latin và bao gồm các kí tự và mã tương ứng của chúng.

Mỗi kí tự trong bảng mã ASCII được mã hóa bằng các giá trị nhị phân (0-1) và có một giá trị thập phân tương ứng để thao tác dễ dàng. Ví dụ, kí tự 'A' có mã thập phân là 65, kí tự 'z' có mã thập phân là 122, và còn nhiều kí tự khác trong bảng mã ASCII.

Trong lập trình, chúng ta thường làm việc với các kí tự in được trong bảng mã ASCII, chẳng hạn như các chữ cái và chữ số. Các kí tự này có thể được sử dụng để biểu diễn văn bản và thực hiện các thao tác xử lý trong máy tính.

Nếu bạn muốn tìm hiểu thêm về bảng mã ASCII đầy đủ, bạn có thể truy cập vào liên kết sau: https://vi.wikipedia.org/wiki/ASCII

2. Kí tự và chuỗi kí tự

trong lập trình, thông tin có thể được biểu diễn dưới dạng số (dạng số nguyên, số thực, v.v.) và dạng phi số (văn bản, hình ảnh, âm thanh, v.v.). Trong lập trình thi đấu, thông tin dạng văn bản xuất hiện thường xuyên và đóng vai trò quan trọng không kém dạng số. Các ngôn ngữ lập trình cung cấp các kiểu dữ liệu đặc biệt để lưu trữ và xử lý thông tin dạng văn bản.

Có hai loại dữ liệu dạng văn bản phổ biến nhất là kiểu kí tự và kiểu chuỗi kí tự (một chuỗi các kí tự được ghép lại).

Đối với kiểu kí tự, trong ngôn ngữ lập trình C++, ta sử dụng kiểu dữ liệu char để biểu diễn. Mỗi biến kiểu char chứa một kí tự duy nhất, ví dụ như 'A', 'b', '1', v.v.

Đối với chuỗi kí tự, ta có hai cách khác nhau để biểu diễn:

  • Sử dụng một mảng gồm nhiều phần tử kiểu char. Mỗi phần tử trong mảng đại diện cho một kí tự của chuỗi và kết thúc bằng kí tự null '\0. Ví dụ: char myString[] = {'H', 'e', 'l', 'l', 'o', '\0'}.

  • Sử dụng lớp chuỗi <string> đã được xây dựng sẵn trong C++. Cách này được ưu chuộng hơn vì hỗ trợ thao tác với chuỗi dễ dàng hơn. Ví dụ: string myString = "Hello".

Việc lựa chọn cách biểu diễn chuỗi dựa vào yêu cầu và sự thuận tiện của từng trường hợp. Tuy nhiên, sử dụng lớp chuỗi <string> thường được khuyến khích trong C++ do nó cung cấp nhiều tính năng tiện ích và hỗ trợ xử lý chuỗi một cách linh hoạt hơn.

II. Lớp <string> trong C++

thư viện chuẩn của C++ cung cấp lớp <string> để hỗ trợ việc lưu trữ và xử lý các chuỗi kí tự. Lớp này có nhiều phương thức và tính năng hữu ích để làm việc với chuỗi kí tự.

Dùng thuật ngữ đơn giản, có thể coi <string> như một kiểu dữ liệu đặc biệt trong C++, nhưng nó được thiết kế để giúp người lập trình xử lý dữ liệu chuỗi một cách dễ dàng và tiện lợi.

1. Khai báo và truy cập các phần tử chuỗi

Để khai báo một chuỗi sử dụng lớp <string>, đầ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 chuỗi bằng cú pháp:

Như thông thường, {Tên_chuỗi} là một định danh do người dùng tự đặt, miễn là không trùng với từ khóa đã được định nghĩa trong ngôn ngữ lập trình. Khi sử dụng lớp <string>, chúng ta không cần khai báo độ dài của chuỗi trước, mà mỗi khi thêm một kí tự vào, độ dài của chuỗi sẽ tự động điều chỉnh để phù hợp với số lượng kí tự.

Khi khai báo một chuỗi, mặc định chuỗi đó sẽ là chuỗi rỗng, tức là không có kí tự nào trong đó.

Các kí tự trong chuỗi được đánh số từ 0. Để truy cập một vị trí cụ thể trong chuỗi (với điều kiện vị trí đó hiện có kí tự hoặc đã được khởi tạo), chúng ta sử dụng cú pháp:

Việc truy cập và thao tác trên các vị trí trong chuỗi tương tự như làm việc với mảng. Sau khi truy cập, mỗi vị trí trong chuỗi có thể được thao tác giống như một kí tự đơn lẻ và có thể kết hợp với các câu lệnh và toán tử khác.

Ví dụ, để gán một biến c bằng kí tự ở vị trí thứ 2 trong chuỗi s, chúng ta có thể sử dụng cú pháp:

2. Cách nhập xuất một chuỗi

2.1. Nhập xuất các biến kiểu <string>

khi nhập và xuất một biến chuỗi kí tự, ta có thể coi chuỗi đó như một biến đơn và sử dụng hai câu lệnh cincout để thực hiện nhập và xuất dữ liệu. Cú pháp được sử dụng như sau:

khi sử dụng lệnh cin để nhập chuỗi kí tự, có một lưu ý quan trọng. Khi gặp dấu cách trong quá trình nhập liệu, lệnh cin sẽ dừng và chỉ lưu trữ phần của chuỗi từ đầu cho đến trước dấu cách. Các kí tự sau dấu cách sẽ không được đưa vào chuỗi. Cùng xem ví dụ dưới đây:

Nếu người dùng nhập vào một tên là Vũ Quế Lâm, 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 chuỗi có cả dấu cách, ta sẽ sử dụng kết họp hai cú pháp:

Lệnh getline() 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ự \n - tức là kí tự xuống dòng:

Vẫn còn nội dung phía dưới, bạn hãy ấn nút để xem tiếp nhé...