Namespaces
Variants

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

From cppreference.net
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 ( ) фактический вызов не требуется

Смотрите также

вызывает xsgetn ( )
(публичная функция-член)