C++ Hàm chuỗi: strcpy(), strcat(), strlen(), strcmp() Ví dụ
Chuỗi là gì?
Một chuỗi là một chuỗi các ký tự. MỘT C++ string là một đối tượng của lớp std::string. Các ký tự là các chuỗi byte được lưu trữ với quyền truy cập vào một byte ký tự đơn được phép.
C++ chuỗi phân bổ bộ nhớ động. Có thể phân bổ nhiều bộ nhớ hơn cho chuỗi trong thời gian chạy nếu cần. Vì không có bộ nhớ được phân bổ trước, nên không lãng phí bộ nhớ. Chúng ta có thể thực hiện nhiều thao tác khác nhau trên chuỗi, bao gồm so sánh, nối, chuyển đổi, v.v.
Khai báo chuỗi
C++ hỗ trợ hai loại khai báo chuỗi:
- Chuỗi ký tự kiểu C
- Kiểu lớp chuỗi
Chuỗi ký tự kiểu C
Kiểu khai báo chuỗi này đã được giới thiệu trong Ngôn ngữ lập trình C. C++ tiếp tục hỗ trợ nó. Nó chỉ đơn giản là một mảng ký tự một chiều được kết thúc bằng ký tự null (\ 0). Chuỗi kết thúc bằng null có các ký tự tạo thành chuỗi, sau đó là chuỗi rỗng.
Hãy xem xét khai báo chuỗi được đưa ra dưới đây:
char name[5] = {'J', 'o', 'h', 'n', '\0'};
Khai báo trên tạo ra một chuỗi tạo thành từ John. Từ này có 4 ký tự, nhưng chuỗi có kích thước là 5. Khoảng trống thừa cho phép giữ ký tự null.
Sử dụng quy tắc khởi tạo mảng, chúng ta có thể viết câu lệnh trên như sau:
char name[] = "John";
Lưu ý rằng bạn không cần phải đặt ký tự null ở cuối hằng chuỗi. các C++ trình biên dịch sẽ tự động đặt '\0' ở cuối chuỗi khi khởi tạo mảng.
std :: string
Tiêu chuẩn này C++ Thư viện cung cấp lớp chuỗi hỗ trợ nhiều hoạt động chuỗi khác nhau. Nó được viết dưới dạng std::string.
Để sử dụng lớp này, trước tiên chúng ta phải đưa nó vào không gian làm việc của mình bằng cách sử dụng bộ tiền xử lý #include như dưới đây:
#include<string>
Tiếp theo, chúng ta có thể khai báo chuỗi của mình bằng từ khóa string. Ví dụ:
string name = "John";
Câu lệnh trên sẽ tạo một chuỗi có tên name để giữ giá trị John.
Truy cập các giá trị chuỗi
In C++, chúng ta có thể truy cập các giá trị chuỗi bằng tên chuỗi. Ví dụ:
#include <iostream> using namespace std; int main() { char name[5] = { 'J', 'o', 'h', 'n', '\0' }; cout << "String value is: "; cout << name << endl; return 0; }
Đầu ra:
Đây là ảnh chụp màn hình của mã:
Giải thích mã:
- Bao gồm tệp tiêu đề iostream trong mã của chúng tôi. Nó sẽ cho phép chúng ta đọc và ghi vào bảng điều khiển.
- Bao gồm không gian tên std để sử dụng các lớp và hàm của nó mà không cần gọi nó.
- Gọi hàm main() để thêm logic của chương trình vào bên trong. Dấu { bắt đầu phần thân của hàm main().
- Khai báo một chuỗi ký tự và đặt tên cho nó. Chuỗi sẽ lưu trữ giá trị John. Không gian thừa sẽ lưu trữ ký tự null.
- In một số văn bản trên bảng điều khiển.
- In giá trị của chuỗi có tên name trên bảng điều khiển.
- Hàm main() sẽ trả về một giá trị nếu chương trình chạy tốt.
- Phần cuối của hàm main().
Đây là một ví dụ khác sử dụng C++ lớp chuỗi tiêu chuẩn:
#include <iostream> #include <string> using namespace std; int main() { string name = "Guru99"; cout << "The name is : " << name << endl; return 0; }
Đầu ra:
Đây là ảnh chụp màn hình của mã:
Giải thích mã:
- Bao gồm tệp tiêu đề iostream trong mã của chúng tôi. Nó sẽ cho phép chúng ta đọc và ghi vào bảng điều khiển.
- Bao gồm lớp chuỗi tiêu chuẩn trong mã của chúng tôi.
- Bao gồm không gian tên std để sử dụng các lớp và hàm của nó mà không cần gọi nó.
- Gọi hàm main() để thêm logic của chương trình vào bên trong. Dấu { bắt đầu phần thân của hàm main().
- Khai báo một chuỗi và đặt tên cho nó. Chuỗi sẽ lưu trữ giá trị Guru99.
- In giá trị của tên chuỗi cùng với một số văn bản trên bảng điều khiển.
- Hàm main() sẽ trả về một giá trị nếu chương trình chạy tốt.
- Phần cuối của hàm main().
Các hàm chuỗi trong C++
Bạn sẽ thường muốn thao tác với chuỗi. C++ cung cấp một loạt các chức năng mà bạn có thể sử dụng cho việc này. Các hàm này được định nghĩa trong lớp CString, do đó, chúng ta phải đưa nó vào mã của mình để sử dụng các hàm. Hãy để chúng tôi thảo luận về một số:
strcpy ()
Đây là chức năng sao chép chuỗi. Nó sao chép một chuỗi thành một chuỗi khác.
Cú pháp:
strcpy(string1, string2);
Hai tham số của hàm, string1 và string2, là chuỗi. Hàm sẽ sao chép chuỗi string2 vào string1.
strcat ()
Đây là hàm nối chuỗi. Nó nối chuỗi.
Cú pháp:
strcat(string1, string2);
Hai tham số của hàm string1 và string2 là các chuỗi được nối với nhau. Hàm trên sẽ nối chuỗi string2 vào cuối chuỗi string1.
strlen ()
Đây là hàm độ dài chuỗi. Nó trả về độ dài của chuỗi được truyền cho nó làm đối số.
Cú pháp:
strnlen(string1)
Tham số string1 là tên của chuỗi có độ dài cần xác định. Hàm trên sẽ trả về độ dài của chuỗi string1.
strcmp()
Đây là hàm so sánh chuỗi. Nó được sử dụng để so sánh chuỗi.
Cú pháp:
strcmp(string1, string2);
Hàm trên sẽ trả về 0 nếu chuỗi string1 và string2 giống nhau, nhỏ hơn 0 nếu string1 chuỗi2.
Ví dụ:
Ví dụ sau đây minh họa cách sử dụng các hàm chuỗi ở trên:
#include <iostream> #include <cstring> using namespace std; int main() { char name1[10] = "Guru99"; char name2[10] = "John"; char name3[10]; int len; strcpy(name3, name1); cout << "strcpy( name3, name1) : " << name3 << endl; strcat(name1, name2); cout << "strcat( name1, name2): " << name1 << endl; len = strlen(name1); cout << "strlen(name1) : " << len << endl; return 0; }
Đầu ra:
Đây là ảnh chụp màn hình của mã:
Giải thích mã:
- Bao gồm tệp tiêu đề iostream trong mã của chúng tôi. Nó sẽ cho phép chúng ta đọc và ghi vào bảng điều khiển.
- Bao gồm lớp CString tiêu chuẩn trong mã của chúng tôi.
- Bao gồm không gian tên std để sử dụng các lớp và hàm của nó mà không cần gọi nó.
- Gọi hàm main() để thêm logic của chương trình vào bên trong. Dấu { bắt đầu phần thân của hàm main().
- Khai báo một chuỗi gồm 10 ký tự và đặt tên là name1. Chuỗi sẽ lưu trữ giá trị Guru99.
- Khai báo một chuỗi gồm 10 ký tự và đặt tên là name2. Chuỗi sẽ lưu trữ giá trị John.
- Khai báo một chuỗi gồm 10 ký tự và đặt tên là name3.
- Khai báo một biến số nguyên tên là len.
- Sao chép chuỗi name1 vào chuỗi name3.
- In giá trị của chuỗi name1 cùng với một số văn bản trên bảng điều khiển. Nó sẽ in Guru99.
- Nối chuỗi name2 vào cuối chuỗi name1. Giá trị của name1 bây giờ là Guru99John.
- In giá trị của chuỗi name1 cùng với một số văn bản trên bảng điều khiển. Nó sẽ in Guru99John
- Xác định độ dài của chuỗi có tên name1 và gán giá trị độ dài cho biến len.
- In giá trị của biến len cùng với một số văn bản khác trên bảng điều khiển.
- Hàm main() sẽ trả về một giá trị nếu chương trình chạy tốt.
- Phần cuối của hàm main().
Tổng kết
- Một chuỗi là một chuỗi các ký tự.
- Các chuỗi thuộc về lớp chuỗi tiêu chuẩn trong C++.
- Chúng ta có thể khai báo chuỗi bằng cách sử dụng chuỗi ký tự kiểu C hoặc lớp chuỗi tiêu chuẩn.
- Hàm strcpy() sao chép một chuỗi này sang một chuỗi khác.
- Hàm strcat() nối hai chuỗi.
- Hàm strlen() trả về độ dài của một chuỗi.
- Hàm strcmp() so sánh hai chuỗi.