Egzamin zawodowyPortal części pisemnej

INF.04 · pytanie 521

Przedstawiony fragment dotyczy funkcji resize w języku C++. Ta funkcja obniży długość elementu string, gdy wartość parametru Resize string Resizes the string to a length of n characters. If n is smaller than the current string length, the current value is shortened to its first n character, removing the characters beyond the nth. If n is greater than the current string length, the current content is extended by inserting at the end as many characters as needed to reach a size of n. If c is specified, the new elements are initialized as copies of c; otherwise, they are value-initialized characters (null characters). Parameters n New string length, expressed in number of characters. size_t is an unsigned integral type (the same as member type string::size_type). c Character used to fill the new character space added to the string (in case the string is expanded). Źródło: http://www.cplusplus.com/reference/string/string/resize/

  1. An jest mniejsza od aktualnej długości łańcuchaPoprawna
  2. Bn jest większa od aktualnej długości łańcucha
  3. Cc jest większa od aktualnej długości łańcucha
  4. Dc jest mniejsza od aktualnej długości łańcucha

Wyjaśnienie

To jest dokładnie to, o co chodzi w funkcji resize dla std::string w C++. Jeśli podany parametr n jest mniejszy od aktualnej długości łańcucha, to obcinamy stringa do tych właśnie n znaków – reszta znika bezpowrotnie. Moim zdaniem to bardzo wygodne, bo nie trzeba ręcznie wycinać fragmentu czy bawić się w operacje na podłańcuchach. Praktycznie rzecz biorąc, można dzięki temu szybko skrócić dane wejściowe, np. gdy pobieramy z pliku długi tekst, a potrzebujemy tylko jego fragment do dalszego przetwarzania. W branży często się to przydaje – na przykład ograniczając długość nicku użytkownika do określonej liczby znaków lub przytrzymując długość serializowanych danych w protokołach sieciowych. Resize działa wprost i zgodnie ze standardem C++, usuwając znaki od indeksu n wzwyż. Co ciekawe, metoda nie tylko skraca, ale też rozszerza string – wtedy wypełnia go nowymi znakami (np. 'x' czy znakiem pustym), ale to właśnie skracanie jest często pomijane przez początkujących, a jest naprawdę przydatne. No i trzeba pamiętać, że oryginalne znaki spoza zakresu po prostu znikają – nie ma żadnych ostrzeżeń. Z mojego doświadczenia to jedna z tych funkcji, do których z czasem nabiera się szacunku – bo ułatwia życie na co dzień przy operacjach na łańcuchach znaków.