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