Spec-Zone.ru › C++

std::basic_stringbuf<CharT,Traits,Allocator>::swap

void swap( basic_stringbuf& rhs );
(начиная с C++11)
(до C++20)
void swap( basic_stringbuf& rhs ) noexcept(/* see below */);
(начиная с C++20)

Меняет местами состояние и содержимое *this и rhs.

Поведение не определено, если Allocator не распространяется при обмене, а аллокаторы *this и other не равны.

(начиная с C++11)

Параметры

rhs - другой объект basic_stringbuf

Возвращаемое значение

(нет)

Исключения

Может выбрасывать исключения, определяемые реализацией.

(начиная с C++11)
(до C++20)
noexcept спецификация:
noexcept(std::allocator_traits<Allocator>::propagate_on_container_swap::value
|| std::allocator_traits<Allocator>::is_always_equal::value)
(начиная с C++20)

Примечания

Эта функция вызывается автоматически при обмене объектами std::stringstream. Прямой вызов этой функции требуется редко.

Пример

#include <iomanip>
#include <iostream>
#include <sstream>
#include <string>

int main()
{
    std::istringstream one("one");
    std::ostringstream two("two");

    std::cout << "Before swap: one = " << std::quoted(one.str())
              << ", two = " << std::quoted(two.str()) << ".\n";

    one.rdbuf()->swap(*two.rdbuf());

    std::cout << "After  swap: one = " << std::quoted(one.str())
              << ", two = " << std::quoted(two.str()) << ".\n";
}

Вывод:

Before swap: one = "one", two = "two".
After  swap: one = "two", two = "one".

См. также

(конструктор)
создаёт объект basic_stringbuf
(открытая функция-член)
swap
(C++11)
меняет местами два строковых потока
(открытая функция-член std::basic_stringstream<CharT,Traits,Allocator>)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/basic_stringbuf/swap

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API