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/w/cpp/io/basic_stringbuf/swap

Spec-Zone.ru

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