std::string::resize w C++

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

Metoda resize() klasy std::string służy do zmiany długości łańcucha znaków. Przyjmuje parametr n, czyli nową liczbę znaków w napisie. Opcjonalnie może przyjąć drugi parametr c, czyli znak używany do uzupełnienia napisu, gdy jest on powiększany.

Skrócenie napisu

Jeżeli n jest mniejsze od aktualnej długości napisu, napis zostaje skrócony do pierwszych n znaków. Znaki znajdujące się dalej są usuwane.

#include <iostream>
#include <string>
using namespace std;

int main() {
    string tekst = "programowanie";
    tekst.resize(7);
    cout << tekst; // program
}

W tym przykładzie aktualna długość napisu jest większa niż 7, więc metoda usuwa znaki po siódmym znaku.

Zwiększenie napisu

Jeżeli n jest większe od aktualnej długości napisu, napis zostaje wydłużony. Brakujące znaki są dopisywane na końcu.

string tekst = "abc";
tekst.resize(6, 'x');
cout << tekst; // abcxxx

Jeśli nie podamy znaku c, nowe miejsca zostaną wypełnione znakami pustymi, czyli \0.

Najważniejsze do zapamiętania

  • n oznacza nową długość napisu.
  • c oznacza znak wypełniający przy rozszerzaniu napisu.
  • Gdy n < aktualna długość, napis jest skracany.
  • Gdy n > aktualna długość, napis jest wydłużany.

W pytaniach egzaminacyjnych trzeba uważnie odróżniać parametr n od parametru c. To n decyduje o nowej długości łańcucha.