На этом шаге мы рассмотрим методы, используемые для работы с размером и емкостью строки.
Для выполнения указанных операций имеются следующие методы:
size_type string::size() const size_type string::length() const
Применительно к строкам они являются эквивалентными.
Для проверки пустых строк следует использовать функцию empty(), поскольку она может работать быстрее.
bool string::empty() const
Эквивалент (но может работать быстрее):
string::size()==0
size_type string::max_size() const
Если размер полученной строки превышает максимально допустимое количество символов, генерируется исключение length_error.
size_type string::capacity () const
void string::reserve () void string::reserve (size_type num)
Вторая форма резервирует внутреннюю память, по крайней мере, для num символов.
Если num меньше текущей емкости, вызов интерпретируется как запрос на сокращение емкости, не обязательный к выполнению.
Если num меньше текущего количества символов, вызов интерпретируется как запрос на сокращение емкости по текущему размеру, не обязательный к выполнению.
При вызове без аргументов функция всегда интерпретируется как запрос на сокращение емкости по текущему размеру, не обязательный к выполнению.
Емкость никогда не сокращается до величины, меньшей текущего количества символов.
При каждом перераспределении памяти становятся недействительными все ссылки, указатели и итераторы. Кроме того, перераспределение требует времени, поэтому предварительный вызов reserve() повышает скорость работы программы и сохраняет ссылки, указатели и итераторы (подробнее смотри 369 шаг).
На следующем шаге мы рассмотрим операции сравнения.