Чтобы добавить одну строку к другой строке, можно использовать перегруженный оператор +=
, функцию append() или функцию push_back().
string& string::operator+=(const string& str)
string& string::append(const string& str)
Обе функции добавляют к std::string строку str
.
Возвращают скрытый указатель *this, что позволяет «связывать» объекты.
Генерируют исключение length_error, если результат превышает максимально допустимое количество символов.
Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <iostream> #include <string> int main() { std::string sString("one"); sString += std::string(" two"); std::string sThree(" three"); sString.append(sThree); std::cout << sString << std::endl; } |
Результат:
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, если результат превышает максимально допустимое количество символов.
Например:
1 2 3 4 5 6 7 8 9 10 11 |
#include <iostream> #include <string> int main() { std::string sString("one "); const std::string sTemp("twothreefour"); sString.append(sTemp, 8, 4); // добавляем к std::string подстроку sTemp длиной 4, начиная с символа под индексом 8 std::cout << sString << std::endl; } |
Результат:
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
.
Например:
1 2 3 4 5 6 7 8 9 10 11 |
#include <iostream> #include <string> int main() { std::string sString("one"); sString += " two"; sString.append(" three"); std::cout << sString << std::endl; } |
Результат:
one two three
И есть еще одна разновидность функции append(), которая работает со строками C-style.
string& string::append(const char* str, size_type len)
Добавляет к std::string количество символов (которые указаны в len
) строки C-style str
.
Возвращает скрытый указатель *this, что позволяет «связывать» объекты.
Генерирует исключение length_error, если результат превышает максимально допустимое количество символов.
Игнорирует специальные символы (включая "
).
Например:
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> #include <string> int main() { std::string sString("two "); sString.append("fivesix", 4); std::cout << sString << std::endl; } |
Результат:
two five
Эта функция опасна, поэтому использовать её не рекомендуется. Существуют также функции, которые добавляют отдельные (единичные) символы.
string& string::operator+=(char c)
void string::push_back(char c)
Обе функции добавляют к std::string символ c
.
Оператор +=
возвращает скрытый указатель *this, что позволяет «связывать» объекты.
Обе функции генерируют исключение length_error, если результат превышает максимально допустимое количество символов.
Например:
1 2 3 4 5 6 7 8 9 10 11 |
#include <iostream> #include <string> int main() { std::string sString("two"); sString += ' '; sString.push_back('3'); std::cout << sString << std::endl; } |
Результат:
two 3
string& string::append(size_type num, char c)
Эта функция добавляет к std::string количество вхождений (которые указываются в num
) символа c
.
Возвращает скрытый указатель *this, что позволяет «связывать» объекты.
Генерирует исключение length_error, если результат превышает максимально допустимое количество символов.
Например:
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> #include <string> int main() { std::string sString("eee"); sString.append(5, 'f'); std::cout << sString << std::endl; } |
Результат:
eeefffff
Есть еще одна (последняя) вариация функции append(), использование которой вы не поймете, если не знакомы с итераторами.
string& string::append(InputIterator start, InputIterator end)
Эта функция добавляет к std::string все символы из диапазона (start, end)
.
Возвращает скрытый указатель *this, что позволяет «связывать» объекты.
Генерирует исключение length_error, если результат превышает максимально допустимое количество символов.
На следующем уроке мы рассмотрим вставку символов в std::string.
скукотища
Пример с string& string::append(InputIterator start, InputIterator end):
Как я понял, уроки начинают доходить до своего логического конца….
Именно.
Но остаётся ещё огромное количество того, что надо изучить: потоки, асинхронное программирование, корутины и тд. 🙂