Щоб додати один рядок до іншого, можна використати перевантажений оператор +=
, функцію 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.