Spec-Zone.ru › C++

std::basic_streambuf<CharT,Traits>::sputn, std::basic_streambuf<CharT,Traits>::xsputn

std::streamsize sputn( const char_type* s, std::streamsize count );
(1)
protected:
virtual std::streamsize xsputn( const char_type* s, std::streamsize count );
(2)
1) Вызывает xsputn(s, count) самого производного класса.
2) Записывает count символов в выходную последовательность из массива символов, первый элемент которого указан в s. Символы записываются так, как если бы они были записаны с помощью многократных вызовов sputc(). Запись останавливается, когда либо count символов будут записаны, либо вызов sputc() вернул бы Traits::eof().

Если область записи заполняется (pptr() == epptr()), то не определено, будет ли фактически вызван overflow(), или его эффект будет достигнут другими средствами.

Параметры

(нет)

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

Количество успешно записанных символов.

Примечания

"достигнуто другими средствами" допускает массивный ввод-вывод без промежуточного буферизации: так, в некоторых реализациях std::ofstream::write() просто передает указатель на соответствующий системный вызов.

Пример

#include <iostream>
#include <sstream>
 
int main()
{
    std::ostringstream s1;
    std::streamsize sz = s1.rdbuf()->sputn("This is a test", 14);
    s1 << '\n';
    std::cout << "The call to sputn() returned " << sz << '\n'
              << "The output sequence contains " << s1.str();
 
    std::istringstream s2;
    sz = s2.rdbuf()->sputn("This is a test", 14);
    std::cout << "The call to sputn() on an input stream returned " << sz << '\n';
}

Вывод:

The call to sputn() returned 14
The output sequence contains This is a test
The call to sputn() on an input stream returned 0

Отчеты об ошибках

Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применено к Поведение, опубликованное Корректное поведение
LWG 565 C++98 xsputn() всегда вызывал overflow(), если pptr() == epptr() ему не нужно вызываться фактически

См. также

sgetn
вызывает xsgetn()
(общедоступный член-функция)

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

Spec-Zone.ru

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