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) | |
Если область вывода становится полной ( 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
(
)
(публичная функция-член) |