Spec-Zone.ru › C++

std::basic_ostream<CharT,Traits>::write

basic_ostream& write( const char_type* s, std::streamsize count );

Ведёт себя как UnformattedOutputFunction. После создания и проверки объекта sentry выводит символы из последовательных позиций массива символов, первый элемент которого указан указателем s. Символы добавляются в выходную последовательность, пока не произойдёт одно из следующих событий:

  • добавлено ровно count символов
  • добавление в выходную последовательность завершается ошибкой (в этом случае вызывается setstate(badbit)).

Параметры

s - указатель на строку символов для записи
count - количество символов для записи

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

*this

Исключения

failure, если произошла ошибка (флаг состояния ошибки не равен goodbit) и для этого состояния установлено значение exceptions(), при котором генерируется исключение.

Если внутренняя операция генерирует исключение, оно перехватывается и устанавливается badbit. Если для badbit установлено exceptions(), исключение генерируется повторно.

Примечания

В отличие от форматированного operator<<, эта функция не имеет перегруженных версий для типов signed char и unsigned char.

Кроме того, в отличие от функций форматированного вывода, эта функция при ошибке не устанавливает failbit.

При использовании неконвертирующей локали (локаль по умолчанию является неконвертирующей) переопределённая версия этой функции в std::basic_ofstream может быть оптимизирована для массового ввода-вывода без копирования (путём переопределения std::streambuf::xsputn).

Пример

Эту функцию можно использовать для вывода представления объекта, то есть для двоичного вывода

#include <iostream>

int main()
{
    int n = 0x41424344;
    std::cout.write(reinterpret_cast<char*>(&n), sizeof n) << '\n';

    char c[] = "This is sample text.";
    std::cout.write(c, 4).write("!\n", 2);
}

Возможный вывод:

DCBA
This!

См. также

operator<<(std::basic_ostream)
вставляет символьные данные или выполняет вставку в поток rvalue
(шаблон функции)
put
вставляет символ
(открытая функция-член)

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

Spec-Zone.ru

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