5 phương pháp tính độ dài chuỗi trong C++, bao gồm cả C-style string và C++ string class.
Code tổng hợp
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main() {
string myStr = "This is a sample string";
char myStrChar[] = "This is a sample string";
// 1. string::length()
cout << "length(): " << myStr.length() << endl;
// 2. string::size()
cout << "size(): " << myStr.size() << endl;
// 3. strlen() cho C-string
cout << "strlen(): " << strlen(myStrChar) << endl;
// 4. Vòng lặp while với con trỏ
cout << "While loop: ";
char *ch = myStrChar;
int count = 0;
while(*ch != '\0') { count++; ch++; }
cout << count << endl;
// 5. Vòng lặp for
cout << "For loop: ";
count = 0;
for(int i = 0; myStrChar[i] != '\0'; i++) count++;
cout << count;
return 0;
}
Kết quả
length(): 23 size(): 23 strlen(): 23 While loop: 23 For loop: 23
So sánh chi tiết
| Phương pháp | Loại chuỗi | Header | Độ phức tạp | Khuyên dùng? |
|---|---|---|---|---|
| str.length() | std::string | <string> | O(1) | ✅ Chuẩn C++ |
| str.size() | std::string | <string> | O(1) | ✅ Tương tự length() |
| strlen(str) | char[] / char* | <cstring> | O(n) | Chỉ cho C-string |
| while loop | char[] / char* | - | O(n) | Học tập |
| for loop | char[] / char* | - | O(n) | Học tập |
Lưu ý quan trọng
std::string::length()vàsize()là O(1) vì string lưu độ dài.strlen()là O(n) vì phải đếm đến null terminator.- Với
std::string, luôn dùng length() hoặc size(). - Với C-string,
strlen()là chuẩn, tránh viết loop thủ công. sizeof(arr)trên mảng char[] trả về size bao gồm null terminator, không phải độ dài chuỗi.