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

std::string::clear

#include <string>

void clear() noexcept;

Xóa tất cả các ký tự khỏi chuỗi, làm cho chuỗi trở thành rỗng (empty).

Tham số

Không có tham số

Giá trị trả về

Không có giá trị trả về

Đặc điểm

  1. clear() chỉ thay đổi size(), không thay đổi capacity(). Dung lượng bộ nhớ đã cấp phát cho chuỗi vẫn được giữ nguyên.
  2. Sau khi gọi clear(), chuỗi trở thành rỗng, tương đương với chuỗi được khởi tạo bằng std::string str;.
  3. Mặc dù clear() không giải phóng bộ nhớ đệm, các destructor của các phần tử bên trong chuỗi (nếu có) sẽ được gọi khi clear() được thực thi.
  4. Để giảm capacity của chuỗi cho khớp với size (trong trường hợp này là 0), bạn có thể sử dụng shrink_to_fit() (từ C++11). Tuy nhiên, shrink_to_fit() chỉ là một yêu cầu và không được đảm bảo sẽ thực hiện.
  5. clear() không làm thay đổi dung lượng (capacity) của chuỗi. Bộ nhớ đã cấp phát cho chuỗi vẫn được giữ nguyên, cho phép bạn thêm các ký tự mới vào chuỗi mà không cần phải cấp phát lại ngay lập tức.
  6. Hàm clear() được chỉ định là noexcept (từ C++11), nghĩa là nó được đảm bảo không ném ra ngoại lệ.
  7. clear() thường được sử dụng khi:
    • Bạn muốn xóa toàn bộ nội dung của chuỗi và bắt đầu lại với một chuỗi rỗng.
    • Bạn muốn tái sử dụng một đối tượng chuỗi đã tồn tại thay vì tạo một đối tượng mới.
    • Bạn muốn giải phóng tài nguyên (các ký tự) đang được chuỗi sử dụng (tuy nhiên, lưu ý rằng clear() không giải phóng bộ nhớ cấp cho vùng đệm lưu trữ các ký tự).

Ví dụ

#include <iostream>
#include <string>

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

std::cout << "Before clear(): str = \"" << str << "\", size = " << str.size() << std::endl;

str.clear();

std::cout << "After clear(): str = \"" << str << "\", size = " << str.size() << std::endl;

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

return 0;
}

Các hàm liên quan

eraseXóa bỏ một phần hoặc toàn bộ nội dung của chuỗi
resizeTrả về số lượng ký tự tối đa mà một đối tượng std::string có thể chứa
emptyKiểm tra xem chuỗi có rỗng hay không