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

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

  1. 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.
  2. 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.
  3. 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.
  4. Nếu n lớn hơn capacity() hiện tại của chuỗi, việc cấp phát lại bộ nhớ sẽ xảy ra, dẫn đến capacity() có thể thay đổi.
  5. 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().
  6. 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.
  7. Nếu n bằng với size() hiện tại, resize() sẽ không làm gì cả.
  8. resize() có thể ném ra ngoại lệ std::length_error nếu n vượt quá max_size().
  9. resize() có thể ném ra ngoại lệ std::bad_alloc nếu không thể cấp phát đủ bộ nhớ.
  10. 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()capacity() của chuỗi.
  11. 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

sizeTrả về số lượng ký tự hiện có trong chuỗi
clearXóa tất cả các ký tự khỏi chuỗi, làm cho chuỗi trở thành rỗng
max_sizeTrả về số lượng ký tự tối đa mà một đối tượng std::string có thể chứa