Độ Dài Chuỗi Trong C++ (strlen)

Hướng dẫn tính độ dài chuỗi trong C++. Bạn sẽ học được cách tính độ dài chuỗi bằng cách sử dụng hàm strlen trong C++ sau bài viết này.

Độ dài chuỗi trong C++ là gì

Chúng ta coi độ dài chuỗi trong C++ chính là tổng số mã ký tự tạo nên các ký tự trong nó. Và do các ký tự trong C++ thường được tạo bởi một mã ký tự nên trong phần lớn trường hợp thì độ dài chuỗi chính là số ký tự tạo nên chuỗi đó.

Ví dụ chuỗi bigcityboy được tạo bởi 10 ký tự, nên độ dài của chuỗi này bằng 10 đơn vị.

Lưu ý rằng độ dài của chuỗi có thể khác với số ký tự có trong chuỗi, trong trường hợp tồn tại ký tự được tạo bởi hơn 2 mã ký tự, như là ký tự tiếng Việt có dấu, hoặc là kanji tiếng Nhật chẳng hạn.

Copy
char srt1[]="bigcityboy";// độ dài chuỗi str1 = 10char srt2[]="đế";// độ dài chuỗi str2 = 5

Tính độ dài chuỗi bằng hàm strlen trong C++

Hàm strlen trong C++ là một hàm có sẵn header file cstring, giúp chúng ta tính độ dài chuỗi trong đối số.

Cú pháp sử dụng hàm strlen để tính độ dài chuỗi trong C++ như sau:

strlen(str);

Trong đó str là tên của chuỗi cần tính độ dài.

Hàm strlen() sẽ đếm số ký tự trong chuỗi cho đến khi gặp ký tự null ('\0') và trả về giá trị đó. Do vậy chúng ta cần lưu ý rằng kết quả đếm sẽ không bao gồm cả ký tự kết thúc chuỗi \0 khi tính độ dài.

Lưu ý là chúng ta cần phải viết thêm dòng #include <cstring> để load header file cstring để có thể sử dụng được hàm strlen() trong chuơng trình.

Ví dụ cụ thể:

Copy
#include <iostream>#include <cstring>using namespace std;int main(){ char str[] = "I Love C/C++"; int len; len = strlen(str); cout << "Length of "<< str << " is " << len; return 0;}//Length of "I Love C/C++" is 12.

Mảng Ký Tự và Độ Dài

Trong nhiều trường hợp, chúng ta sử dụng mảng ký tự để biểu diễn chuỗi. Độ dài của mảng ký tự có thể được xác định bằng cách sử dụng hàm sizeof hoặc bằng cách duyệt qua từng ký tự cho đến khi gặp ký tự null. Dưới đây là một ví dụ:

Copy
#include <iostream>int main() { char myString[] = "Hello, World!"; // Sử dụng hàm sizeof để xác định độ dài mảng int length1 = sizeof(myString) / sizeof(myString[0]) - 1; // Sử dụng vòng lặp để đếm độ dài mảng int length2 = 0; while (myString[length2] != '\0') { length2++; } std::cout << "Độ dài của chuỗi: " << length1 << " ký tự (sử dụng sizeof) và " << length2 << " ký tự (sử dụng vòng lặp)." << std::endl; return 0;}

Tính độ dài chuỗi có chứa tiếng Việt bằng hàm strlen trong C++

Trong bài Ký tự trong C++ (character literal) chúng ta đã biết trong C++, các ký tự tiếng Việt có dấu (ví dụ như ă, ú,đ…) được biểu diễn bởi nhiều hơn 2 mã ký tự, do đó nếu sử dụng hàm strlen() với các ký tự này thì chúng ta sẽ nhận được kết quả nhiều hơn số ký tự tạo nên chuỗi.

Chuyện này cũng tương tự khi chúng ta sử dụng hàm strlen() với các các ký tự được tạo bởi 2 bite trở lên như hán tự tiếng Trung hoặc tiếng Nhật zenkaku.

Điều này khá là khác biệt so với các ngôn ngữ khác, ví dụ như Python chẳng hạn, vốn tính độ dài chuỗi chính bằng số ký tự tạo nên nó, chứ không phụ thuộc vào số mã ký tự tạo nên các ký tự trong nó.

Bởi vậy, chúng ta cần chú ý không nhầm lẫn độ dài của chuỗi trong C++ với số ký tự trong chuỗi khi trong chuỗi đó chứa các ký tự được biểu diễn bởi nhiều hơn 2 mã ký tự.

Ví dụ cụ thể:

Copy
#include <iostream>#include <cstring>using namespace std;int main(){ // Tính độ dài chuỗi chứa ký tự tiếng anh char str1[] = "e"; cout << strlen(str1);//1 // Tính độ dài chuỗi chứa ký tự tiếng Việt char str2[] = "ê"; cout << strlen(str2);//2 // Tính độ dài chuỗi chứa ký tự tiếng Việt có dấu char str3[] = "ế"; cout << strlen(str3);//3 // Tính độ dài chuỗi chứa kanji tiếng Nhật char str4[] = "東京"; cout << strlen(str4);//6 return 0;}

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách tính độ dài chuỗi trong C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo.

URL Link

https://laptrinhcanban.com/cpp/lap-trinh-cpp-co-ban/chuoi-string-trong-cpp/do-dai-chuoi-trong-cpp/

Từ khóa » Hàm Lấy độ Dài Chuỗi String Trong C++