Chuyển tới nội dung chính

std::string::size

#include <string>

size_type size() const noexcept;

Trả về số lượng ký tự hiện có trong chuỗi. Giá trị này tương đương với length().

Tham số

Không có tham số

Giá trị trả về

size_type

  • Một kiểu số nguyên không dấu (thường là std::size_t) đại diện cho số lượng ký tự trong chuỗi.

Đặc điểm

  1. size()length() là hoàn toàn tương đương và trả về cùng một giá trị. Bạn có thể sử dụng hàm nào cũng được, tùy theo sở thích cá nhân.
  2. Giá trị trả về của size() là kiểu size_type, thường là std::size_t. Đây là kiểu số nguyên không dấu, đủ lớn để biểu diễn kích thước của chuỗi.
  3. size() trả về số lượng ký tự hiện có trong chuỗi, không phải là dung lượng (capacity) của chuỗi. Dung lượng là số lượng ký tự mà chuỗi có thể lưu trữ mà không cần phải cấp phát lại bộ nhớ.
  4. Hàm size() có độ phức tạp thời gian là hằng số (O(1)), nghĩa là thời gian thực hiện hàm này rất nhanh và không phụ thuộc vào độ dài của chuỗi.
  5. Hàm size() được chỉ định là noexcept (từ C++11), nghĩa là nó được đảm bảo không ném ra ngoại lệ.
  6. size() thường được sử dụng để:
    • Lấy độ dài hiện tại của chuỗi.
    • Kiểm tra xem chuỗi có rỗng hay không (thay vì so sánh size() với 0, bạn có thể sử dụng empty() để rõ nghĩa hơn).
    • Sử dụng trong các vòng lặp để duyệt qua các ký tự của chuỗi.
    • Kết hợp với các hàm thành viên khác của std::string để thực hiện các thao tác dựa trên kích thước của chuỗi.

Ví dụ

#include <iostream>
#include <string>

int main() {
std::string str = "Hello, world!";

std::cout << "Size of str: " << str.size() << std::endl;
std::cout << "Length of str: " << str.length() << std::endl; // Tương đương với size()

if (str.empty()) {
std::cout << "str is empty.\n";
} else {
std::cout << "str is not empty.\n";
}

// Duyệt qua chuỗi sử dụng size()
for (std::string::size_type i = 0; i < str.size(); ++i) {
std::cout << str[i] << " ";
}
std::cout << std::endl;

return 0;
}

Các hàm liên quan

lengthTrả về số lượng ký tự hiện có trong chuỗi
resizeTrả về số lượng ký tự tối đa mà một đối tượng std::string có thể chứa
max_sizeTrả về số lượng phần tử tối đa mà std::array có thể chứa
capacityTrả về dung lượng bộ nhớ hiện tại được cấp phát cho chuỗi