Урок №204. Присваивание и перестановка значений с std::string

  Юрий  | 

  |

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

 17434

 ǀ   2 

На этом уроке мы рассмотрим операции присваивания других значений для std::string и перестановку значений двух строк.

Присваивание для std::string других значений

Самый простой способ присвоить std::string другое значение — использовать перегруженный оператор присваивания =. Или, в качестве альтернативы, метод assign().

string& string::operator=(const string& str)
string& string::assign(const string& str)
string& string::operator=(const char* str)
string& string::assign(const char* str)
string& string::operator=(char c)

   Эти функции позволяют присваивать std::string значения разных типов.

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

   Обратите внимание, функции assign(), которая бы принимала один символ, нет.

Например:

Результат:

One
Two
Three
Four
5
Six Six

Метод assign() также имеет несколько других разновидностей.

string& string::assign(const string& str, size_type index, size_type len)

   Эта функция присваивает std::string подстроку str длиной len, начиная с index-а.

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

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

Например:

Результат:

defgh

string& string::assign(const char* chars, size_type len)

   Эта функция присваивает std::string строку C-style длиной len.

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

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

Например:

Результат:

abcde

Эта функция потенциально опасна, поэтому использовать её не рекомендуется.

string& string::assign(size_type len, char c)

   Эта функция присваивает std::string определенное количество вхождений символа c. Количество вхождений указывается в len.

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

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

Например:

Результат:

hhhhh

Перестановка значений двух строк


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

void string::swap(string &str)
void swap(string &str1, string &str2)

   Обе функции меняют местами значения двух строк. Первый вариант функции swap() меняет местами значения *this и str, а второй — str1 и str2.

   Используйте данные функции вместо операции присваивания, если нужно поменять местами значения двух строк.

Например:

Результат:

green white
white green
green white

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

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

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

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

  1. Steindvart:

    А есть какие-нибудь отличия между std::string::swap и std::swap? Использует ли std::string::swap семантику перемещения?

    1. Denis:

      По сути std::string::swap является оберткой std::swap, с дополнительными проверками.

Добавить комментарий

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