Spec-Zone.ru › C++

std::basic_filebuf<CharT,Traits>::operator=

std::basic_filebuf& operator=( std::basic_filebuf&& rhs );
(1) (since C++11)
std::basic_filebuf& operator=( const std::basic_filebuf& rhs ) = delete;
(2)

Присваивает другой объект basic_filebuf.

1) Сначала вызывает close() для закрытия связанного файла, затем перемещает содержимое rhs в *this: буферы put и get, связанный файл, локаль, режим открытия, флаг is_open и любой другой состояние. После перемещения rhs не связан с файлом и rhs.is_open() == false.
2) Оператор копирующего присваивания удален; basic_filebuf не является CopyAssignable.

Параметры

rhs - другой объект basic_filebuf, который будет перемещен

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

*this

Пример

#include <cassert>
#include <fstream>
#include <iostream>
#include <string>
 
int main()
{
    std::ofstream{"test.in"} << "test\n"; // writes via a temporary object
    std::ifstream fin("test.in"); // read-only stream
    std::ofstream fout("test.out"); // write-only stream
 
    std::string s;
    std::getline(fin, s);
    std::cout << "s = [" << s << "]\n"; // s contains "test"
 
    assert(fout.is_open());
    *fin.rdbuf() = std::move(*fout.rdbuf());
    assert(!fout.is_open());
 
    std::getline(fin, s);
    std::cout << "s = [" << s << "]\n"; // s is empty input
}

Вывод:

s = [test]
s = []

См. также

(конструктор)
создает объект basic_filebuf
(публичный член-функция)
swap
(C++11)
меняет местами два объекта basic_filebuf
(публичный член-функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/basic_filebuf/operator%3D

Spec-Zone.ru

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