На этом шаге мы рассмотрим методы, работающие с отдельными символами.
Для обращения к отдельных символам строк имеются следующие методы:
char& string::operator[] (size_type idx) char string::operator[] (size_type idx) const
Для константных строк значение length() является действительным индексом; при обращении по нему оператор возвращает значение, сгенерированное конструктором по умолчанию для типа символов (\0 для типа string).
Для неконстантных строк значение length() не является действительным индексом.
Передача недействительного индекса приводит к непредсказуемым последствиям.
Ссылки, возвращаемые для неконстантных строк, могут стать недействительными из-за модификаций строки или перераспределения памяти.
Если вызывающая сторона не может проверить действительность индекса, следует использовать функцию at().
char& string::at (size_type idx) const char& string::at (size_type idx) const
Для всех строк значение length() не является действительным индексом.
При использовании недействительного индекса (отрицательного, а также большего либо равного size()) генерируется исключение out_of_range.
Ссылки, возвращаемые для неконстантных строк, могут стать недействительными из-за модификаций строки или перераспределения памяти.
Если при вызове вы уверены в действительности индекса, можно воспользоваться оператором [], который работает быстрее.
На следующем шаге мы рассмотрим методы, используемые для построения C-строк и символьных массивов.