Chuỗi (String) trong C++ – Tài liệu lập trình C++ tiếng Việt – 123docz.net

 Chuỗi theo phong cách của ngôn ngữ C (C-style),

 Lớp Chuỗi (String) được giới thiệu trong C++ chuẩn.

Chuỗi theo phong cách C

Dạng chuỗi này bắt nguồn từ ngôn ngữ C và tiếp tục được hỗ trợ trong C++. Chuỗi trong ngôn ngữ
lập trình C thực chất là mảng một chiều của các ký tự mà kết thúc bởi một ký tựnull „\0‟.

Phần khai báo và khởi tạo dưới đây tạo ra một chuỗi bao gồm một từ “Hello”. Để giữ các giá trị null
tại cuối của mảng, cỡ của mảng các ký tự bao gồm một chuỗi phải nhiều hơn số lượng các ký tự
trong từ khóa “Hello”.

char greeting[6] = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’};

Nếu bạn theo quy tắc khởi tạo các chuỗi, bạn có thể viết lệnh như sau:

char greeting[] = “Hello”;

Dưới đây là phần biểu diễn ô nhớ cho đoạn chuỗi trên trong ngôn ngữ C/C++:

Thực tế, bạn không đặt ký tự null tại vị trí cuối cùng của biến hằng số. Bộ biên dịch C tự động thêm
„\0‟ tại ví trí cuối cùng của chuỗi khi nó khởi tạo chuỗi. Cùng thử ví dụ in ra chuỗi sau đây:

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 73

using namespace std;

int main ()
{

char greeting[6] = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’};
cout << “Greeting message: “;

cout << greeting << endl;

return 0;
}

Khi đoạn code trên được biên dịch và thực hiện, kết quả in ra sẽ như sau:

Greeting message: Hello

Ngôn ngữ C++ hỗ trợ nhiều hàm đa dạng để thao tác các chuỗi kết thúc là null:

STT Hàm & Mục đích

1 strcpy(s1, s2);

Sao chép chuỗi s2 cho chuỗi s1.

2 strcat(s1, s2);

Nối chuỗi s2 vào cuối chuỗi s1.

3 strlen(s1);

Trả về độ dài của chuỗi s1.

4 strcmp(s1, s2);

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 74

5 strchr(s1, ch);

Trả về con trỏ tới vị trí đầu tiên của ch trong s1.

6 strstr(s1, s2);

Trả về con trỏ tới vị trí đầu tiên của chuỗi s2 trong chuỗi s1.

Dưới đây là ví dụ cho việc sử dụng một vài hàm bên trên:

#include <iostream>
#include <cstring>
using namespace std;
int main ()
{
char str1[10] = “Hello”;
char str2[10] = “World”;
char str3[10];
int len ;
// copy str1 into str3
strcpy( str3, str1);

cout << “strcpy( str3, str1) : ” << str3 << endl;

// concatenates str1 and str2

strcat( str1, str2);

cout << “strcat( str1, str2): ” << str1 << endl;

// total lenghth of str1 after concatenation

len = strlen(str1);

cout << “strlen(str1) : ” << len << endl;

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 75

}

Khi đoạn code trên được biên dịch và thực hiện, kết quả dưới đây sẽ được in ra:

strcpy( str3, str1) : Hello
strcat( str1, str2): HelloWorld
strlen(str1) : 10

Lớp String trong C++

Thư viện chuẩn C++ cung cấp một kiểu lớp String mà hỗ trợ tất cả hoạt động liên quan tới chuỗi
đã đề cập ở trên, và bổ sung thêm nhiều tính năng nữa. Chúng ta sẽ học lớp này trong Thư viện
chuẩn C++ (C++ Standard Library), nhưng lúc này, chúng ta xem xét ví dụ sau:

Lúc này, có thể bạn không hiểu ví dụ này, bởi vì chúng ta chưa bàn luận về Lớp và Đối

tượng trong C++. Vì thế, bạn quan sát và ghi nhớ chúng tới khi bạn đã hiểu các khái niệm về

Hướng đối tượng được trình bày ở chương sau đó.

#include <iostream>
#include <string>
using namespace std;
int main ()
{
string str1 = “Hello”;
string str2 = “World”;
string str3;
int len ;
// copy str1 into str3
str3 = str1;
cout << “str3 : ” << str3 << endl;
// concatenates str1 and str2
str3 = str1 + str2;

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 76

cout << “str1 + str2 : ” << str3 << endl;

// total lenghth of str3 after concatenation

len = str3.size();

cout << “str3.size() : ” << len << endl;

return 0;
}

Khi code trên được biên dịch và thực thi, nó sẽ cho kết quả:

str3 : Hello

str1 + str2 : HelloWorld
str3.size() : 10

Con trỏ trong C++