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
clear()
chỉ thay đổisize()
, không thay đổicapacity()
. Dung lượng bộ nhớ đã cấp phát cho chuỗi vẫn được giữ nguyên.- 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ằngstd::string str;
. - 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 khiclear()
được thực thi. - Để 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. 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.- 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ệ. 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
erase | Xóa bỏ một phần hoặc toàn bộ nội dung của chuỗi |
resize | Trả về số lượng ký tự tối đa mà một đối tượng std::string có thể chứa |
empty | Kiểm tra xem chuỗi có rỗng hay không |