Spec-Zone.ru › C++

std::basic_streambuf<CharT,Traits>::pubsetbuf, std::basic_streambuf<CharT,Traits>::setbuf

public:
basic_streambuf<CharT, Traits>* pubsetbuf( char_type* s, std::streamsize n )
(1)
protected:
virtual basic_streambuf<CharT, Traits>* setbuf( char_type* s, std::streamsize n )
(2)
1) Вызывает setbuf(s, n) самого производного класса.
2) Версия этой функции в базовом классе не имеет эффекта. Производные классы могут переопределить эту функцию, чтобы разрешить удаление или замену управляемой последовательности символов (буфера) на предоставленный пользователем массив или для любых других целей, специфичных для реализации.

Параметры

s - указатель на первый CharT в предоставленном пользователем буфере
n - количество элементов CharT в предоставленном пользователем буфере

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

1) Возвращаемое значение setbuf(s, n).
2) this

Пример

Предоставляет буфер размером 10кб для чтения. В Linux утилита strace может использоваться для наблюдения за фактическим количеством прочитанных байтов.

#include <fstream>
#include <iostream>
#include <string>
 
int main()
{
    int cnt = 0;
    std::ifstream file;
    char buf[1024 * 10 + 1];
 
    file.rdbuf()->pubsetbuf(buf, sizeof buf);
 
    file.open("/usr/share/dict/words");
 
    for (std::string line; getline(file, line);)
        ++cnt;
 
    std::cout << cnt << '\n';
}

Возможный вывод:

356010

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

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

DR Применено к Поведение как опубликовано Правильное поведение
LWG 158 C++98 по умолчанию поведение setbuf было указано только
если gptr() не равно нулю и не равно egptr()
указано как бездействие
для всех случаев

См. также

setbuf
[virtual]
попытка заменить управляемую последовательность символов массивом
(виртуальная защищённая функция-член std::basic_stringbuf<CharT,Traits,Allocator>)
setbuf
[virtual]
предоставляет буфер, предоставленный пользователем, или делает этот filebuf небуферизованным
(виртуальная защищённая функция-член std::basic_filebuf<CharT,Traits>)
setbuf
[virtual]
попытка заменить управляемую последовательность символов массивом
(виртуальная защищённая функция-член std::strstreambuf)
setbuf
устанавливает буфер для потока файла
(функция)

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

Spec-Zone.ru

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