Россия и Беларусь начали и продолжают войну против народа Украины!

Урок №205. Добавление к std::string

  Юрий  | 

  |

  Обновл. 15 Сен 2021  | 

 25922

 ǀ   5 

Чтобы добавить одну строку к другой строке, можно использовать перегруженный оператор +=, функцию append() или функцию push_back().

string& string::operator+=(const string& str)
string& string::append(const string& str)

   Обе функции добавляют к std::string строку str.

   Возвращают скрытый указатель *this, что позволяет «связывать» объекты.

   Генерируют исключение length_error, если результат превышает максимально допустимое количество символов.

Например:

Результат:

one two three

Существует также разновидность функции append(), которая может добавлять подстроку.

string& string::append(const string& str, size_type index, size_type num)


   Эта функция добавляет к std::string строку str с количеством символов, которые указываются в num, начиная с index-а.

   Возвращает скрытый указатель *this, что позволяет «связывать» объекты.

   Генерирует исключение out_of_range, если index некорректен.

   Генерирует исключение length_error, если результат превышает максимально допустимое количество символов.

Например:

Результат:

one four

Оператор += и функция append() также имеют версии, которые работают со строками C-style.

string& string::operator+=(const char* str)
string& string::append(const char* str)

   Обе функции добавляют к std::string строку C-style str.

   Возвращают скрытый указатель *this, что позволяет «связывать» объекты.

   Генерируют исключение length_error, если результат превышает максимально допустимое количество символов.

   str не должен быть NULL.

Например:

Результат:

one two three

И есть еще одна разновидность функции append(), которая работает со строками C-style.

string& string::append(const char* str, size_type len)


   Добавляет к std::string количество символов (которые указаны в len) строки C-style str.

   Возвращает скрытый указатель *this, что позволяет «связывать» объекты.

   Генерирует исключение length_error, если результат превышает максимально допустимое количество символов.

   Игнорирует специальные символы (включая ").

Например:

Результат:

two five

Эта функция опасна, поэтому использовать её не рекомендуется. Существуют также функции, которые добавляют отдельные (единичные) символы.

string& string::operator+=(char c)
void string::push_back(char c)

   Обе функции добавляют к std::string символ c.

   Оператор += возвращает скрытый указатель *this, что позволяет «связывать» объекты.

   Обе функции генерируют исключение length_error, если результат превышает максимально допустимое количество символов.

Например:

Результат:

two 3

string& string::append(size_type num, char c)


   Эта функция добавляет к std::string количество вхождений (которые указываются в num) символа c.

   Возвращает скрытый указатель *this, что позволяет «связывать» объекты.

   Генерирует исключение length_error, если результат превышает максимально допустимое количество символов.

Например:

Результат:

eeefffff

Есть еще одна (последняя) вариация функции append(), использование которой вы не поймете, если не знакомы с итераторами.

string& string::append(InputIterator start, InputIterator end)

   Эта функция добавляет к std::string все символы из диапазона (start, end).

   Возвращает скрытый указатель *this, что позволяет «связывать» объекты.

   Генерирует исключение length_error, если результат превышает максимально допустимое количество символов.

На следующем уроке мы рассмотрим вставку символов в std::string.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (86 оценок, среднее: 4,88 из 5)
Загрузка...

Комментариев: 5

  1. Анастасия:

    скукотища

  2. kmish:

    Пример с string& string::append(InputIterator start, InputIterator end):

  3. Евгений:

    Как я понял, уроки начинают доходить до своего логического конца….

    1. Grave18:

      Но остаётся ещё огромное количество того, что надо изучить: потоки, асинхронное программирование, корутины и тд. 🙂

Добавить комментарий для Юрий Отменить ответ

Ваш E-mail не будет опубликован. Обязательные поля помечены *