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!
См. также
| вставляет символьные данные или выполняет вставку в поток rvalue (шаблон функции) |
|
| вставляет символ (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/basic_ostream/write