C++ libstdc+内基本文件buf的默认缓冲区大小+;

C++ libstdc+内基本文件buf的默认缓冲区大小+;,c++,buffer,C++,Buffer,有人知道GNU GCC中libstdc++中basic_filebuf的默认缓冲区大小吗?我知道成员函数pubsetbuf(),我非常确定缓冲区大小是由实现定义的。在C语言中很简单,从中获取BUFSIZ 可能变量名为extern\u buf,XSIZE,intern\u buf或ISIZE?我找到了它。C++从C(参见)中获取Bufsiz。文件fstream和fstream.tcc包括类basic\u filebuf 注意:来自GCC的LIBSTDC++ 从文件fstream #include

有人知道GNU GCC中libstdc++中basic_filebuf的默认缓冲区大小吗?我知道成员函数pubsetbuf(),我非常确定缓冲区大小是由实现定义的。在C语言中很简单,从
中获取BUFSIZ


可能变量名为extern\u bufXSIZEintern\u bufISIZE

我找到了它。C++从C(参见)中获取Bufsiz。文件fstreamfstream.tcc包括类basic\u filebuf

注意:来自GCC的LIBSTDC++

从文件fstream

#include <istream>
#include <ostream>
#include <bits/codecvt.h>
#include <cstdio>             // For BUFSIZ
#include <bits/basic_file.h>  // For __basic_file, __c_lock
#ifdef __GXX_EXPERIMENTAL_CXX0X__
#include <string>             // For std::string overloads.
#endif


/**
 *  Actual size of internal buffer. This number is equal to the size
 *  of the put area + 1 position, reserved for the overflow char of
 *  a full area.
 */
size_t          _M_buf_size;
#包括
#包括
#包括
#包含//用于BUFSIZ
#包含//对于_基本文件,_c_锁
#ifdef\uuugxx\u实验性\uCXx0x__
#include//For std::string重载。
#恩迪夫
/**
*内部缓冲区的实际大小。这个数字等于大小
*放置区域的+1位置,为的溢出字符保留
*一个完整的区域。
*/
大小;
来自文件fstream.tcc

template<typename _CharT, typename _Traits>
    basic_filebuf<_CharT, _Traits>::
    basic_filebuf() : __streambuf_type(), _M_lock(), _M_file(&_M_lock),
    _M_mode(ios_base::openmode(0)), _M_state_beg(), _M_state_cur(),
    _M_state_last(), _M_buf(0), _M_buf_size(BUFSIZ),
    _M_buf_allocated(false), _M_reading(false), _M_writing(false), _M_pback(), 
    _M_pback_cur_save(0), _M_pback_end_save(0), _M_pback_init(false),
    _M_codecvt(0), _M_ext_buf(0), _M_ext_buf_size(0), _M_ext_next(0),
    _M_ext_end(0)
    {
      if (has_facet<__codecvt_type>(this->_M_buf_locale))
    _M_codecvt = &use_facet<__codecvt_type>(this->_M_buf_locale);
    }
模板
基本文件buf::
基本文件buf():uu streambuf_type(),_M_lock(),_M_文件(&_M_lock),
_M_模式(ios_base::openmode(0)),_M_状态_beg(),_M_状态_cur(),
_M_state_last(),_M_buf(0),_M_buf_size(BUFSIZ),
_M_buf_已分配(false),_M_读取(false),_M_写入(false),_M_pback(),
_M_pback_cur_save(0),_M_pback_end_save(0),_M_pback_init(false),
_M_codevt(0),_M_ext_buf(0),_M_ext_buf_size(0),_M_ext_next(0),
_M_ext_end(0)
{
如果(有方面(此->\M\u buf\u区域设置))
_M_codecvt=&使用_方面(此->M_buf_区域设置);
}

8千字节

它可能因实现而异。我自己对此很好奇,因为我开始了一个新的个人项目。由于彼得的回答,我的搜索从stdio.h开始。一个简单的例子:

cat/usr/include/stdio.h | grep-i bufsiz
产生了一个重新定义

grep-rwnl/usr/include/-e
首先添加
\u IO_BUFSIZ
(在
libio.h
中定义),然后添加
\u BUFSIZ
(在
\u G_config.h
中定义)。重新定义就此停止


grep-i_g_bufsiz/usr/include/_g_config.h

我打开了basic_filebuf的标题并查看了一下,默认的是,哦,这是什么闪亮的新按钮?到目前为止,你是对的。非常感谢。但也有点不礼貌。真的我只是没有找到正确的文件来查看内部。我想它不可能是fstream/fstream.tcc,因为我一直在寻找“basic_filebuf”!但正是这些文件,我必须看!