std::basic_streambuf::pubsetbuf

std::basic_streambuf::pubsetbuf, std::basic_streambuf::setbuf

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) Calls setbuf(s, n) of the most derived class
2) The base class version of this function has no effect. The derived classes may override this function to allow removal or replacement of the controlled character sequence (the buffer) with a user-provided array, or for any other implementation-specific purpose.

Parameters

s - pointer to the first byte in the user-provided buffer
n - the number of bytes in the user-provided buffer

Return value

1) The return value of setbuf(s, n)
2) this

Example

provide a 10k buffer for reading. On linux, the strace utility may be used to observe the actual number of bytes read.

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

See also

[virtual]
attempts to replace the controlled character sequence with an array
(virtual protected member function of std::basic_stringbuf)
[virtual]
provides user-supplied buffer or turns this filebuf unbuffered
(virtual protected member function of std::basic_filebuf)
[virtual]
attempts to replace the controlled character sequence with an array
(virtual protected member function of std::strstreambuf)
sets the buffer for a file stream
(function)

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

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部