std::string::resize
#include <string>
void resize (size_type n);
void resize (size_type n, charT c);
Thay đổi kích thước của chuỗi (số lượng ký tự) thành kích thước được chỉ định.
Tham số
n
- Kích thước mới của chuỗi (số lượng ký tự).
c
- Ký tự được sử dụng để điền vào các vị trí mới được thêm vào nếu chuỗi được mở rộng (phiên bản 2).
Giá trị trả về
Không có giá trị trả về
Đặc điểm
resize()
thay đổi trực tiếp nội dung của chuỗi, không tạo ra một chuỗi mới.- Nếu
n
nhỏ hơn kích thước hiện tại của chuỗi, các ký tự sau vị trín
sẽ bị xóa. - Nếu
n
lớn hơn kích thước hiện tại của chuỗi, các ký tự mới sẽ được thêm vào cuối chuỗi. - Nếu
n
lớn hơncapacity()
hiện tại của chuỗi, việc cấp phát lại bộ nhớ sẽ xảy ra, dẫn đếncapacity()
có thể thay đổi. - Phiên bản
resize(n)
sử dụng ký tự null (\0
) làm giá trị mặc định để điền vào các vị trí mới nếu chuỗi được mở rộng (đối với std::string). Đối với các kiểu basic_string khác, giá trị mặc định sẽ làcharT()
. - Phiên bản
resize(n, c)
cho phép bạn chỉ định ký tự c để điền vào các vị trí mới. - Nếu
n
bằng vớisize()
hiện tại,resize()
sẽ không làm gì cả. resize()
có thể ném ra ngoại lệ std::length_error nếun
vượt quámax_size()
.resize()
có thể ném ra ngoại lệ std::bad_alloc nếu không thể cấp phát đủ bộ nhớ.- Hành vi:
- Nếu kích thước mới nhỏ hơn kích thước hiện tại, chuỗi sẽ bị cắt ngắn.
- Nếu kích thước mới lớn hơn kích thước hiện tại, chuỗi sẽ được mở rộng và các ký tự mới được thêm vào cuối chuỗi.
resize()
có thể thay đổi cảsize()
vàcapacity()
của chuỗi.
resize()
thường được sử dụng để:- Thay đổi kích thước của chuỗi để phù hợp với nhu cầu lưu trữ.
- Cắt ngắn chuỗi.
- Mở rộng chuỗi và điền vào các ký tự mới bằng một giá trị mặc định.
Ví dụ
#include <iostream>
#include <string>
int main() {
std::string str = "Hello";
std::cout << "Original string: " << str << ", size: " << str.size() << std::endl;
// Tăng kích thước lên 10, điền vào các ký tự mới bằng '-'
str.resize(10, '-');
std::cout << "Resized (increase) string: " << str << ", size: " << str.size() << std::endl;
// Giảm kích thước xuống 5
str.resize(5);
std::cout << "Resized (decrease) string: " << str << ", size: " << str.size() << std::endl;
return 0;
}
Các hàm liên quan
size | Trả về số lượng ký tự hiện có trong chuỗi |
clear | Xóa tất cả các ký tự khỏi chuỗi, làm cho chuỗi trở thành rỗng |
max_size | Trả về số lượng ký tự tối đa mà một đối tượng std::string có thể chứa |