GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::basic_filebuf::setbuf(3) C++ Standard Libary std::basic_filebuf::setbuf(3)

std::basic_filebuf::setbuf - std::basic_filebuf::setbuf


protected:
virtual std::basic_streambuf<CharT, Traits>* setbuf( char_type* s, std::streamsize
n )


If s is a null pointer and n is zero, the filebuf becomes unbuffered for output,
meaning pbase() and pptr() are null and any output is immediately sent to file.


Otherwise, a call to setbuf() replaces the internal buffer (the controlled character
sequence) with the user-supplied character array whose first element is pointed to
by s and allows this std::basic_filebuf object to use up to n bytes in that array
for buffering.


This function is protected virtual, it may only be called through pubsetbuf() or
from member functions of a user-defined class derived from std::basic_filebuf.


s - pointer to the first CharT in the user-provided buffer or null
n - the number of CharT elements in the user-provided buffer or zero


this.


The conditions when this function may be used and the way in which the provided
buffer is used is implementation-defined.


* GCC 4.6 libstdc++


setbuf() may only be called when the std::basic_filebuf is not associated
with a file (has no effect otherwise). With a user-provided buffer, reading
from file reads n-1 bytes at a time.


* Clang++3.0 libc++


setbuf() may be called after opening the file, but before any I/O (may crash
otherwise). With a user-provided buffer, reading from file reads largest
multiples of 4096 that fit in the buffer.


* Visual Studio 2010


setbuf() may be called at any time, even after some I/O took place. Current
contents of the buffer, if any, are lost.


The standard does not define any behavior for this function except that setbuf(0, 0)
called before any I/O has taken place is required to set unbuffered output.


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

// Run this code


#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';
}


pubsetbuf invokes setbuf()
(public member function of std::basic_streambuf<CharT,Traits>)
setvbuf sets the buffer and its size for a file stream
(function)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.