std::basic_stringbuf<CharT,Traits,Allocator>::setbuf
protected: virtual std::basic_streambuf<CharT, Traits>* setbuf( char_type* s, std::streamsize n ) |
Если s является нулевым указателем и n равно нулю, эта функция не оказывает никакого влияния.
В противном случае, эффект определяется реализацией: некоторые реализации ничего не делают, в то время как другие очищают член std::string, который в настоящее время используется в качестве буфера, и начинают использовать предоставленный пользователем массив символов размером n, первый элемент которого указан s, в качестве буфера и последовательности ввода/вывода символов.
Эта функция является защищенной виртуальной, и её можно вызывать только через pubsetbuf() или из функций-членов пользовательского класса, производного от std::basic_stringbuf.
Параметры
| s | - | указатель на первый символ CharT в предоставленном пользователем буфере или null |
| n | - | количество элементов CharT в предоставленном пользователем буфере или ноль |
Возвращаемое значение
this
Примечания
Устаревший буфер потока std::strstreambuf или устройство boost.IOStreams boost::basic_array могут использоваться для реализации буферизации ввода/вывода над предоставленным пользователем массивом символов надежным способом.
Пример
Тестирование функциональности setbuf для stringstream.
#include <iostream>
#include <sstream>
int main()
{
std::ostringstream ss;
char c[1024] = {};
ss.rdbuf()->pubsetbuf(c, 1024);
ss << 3.14 << '\n';
std::cout << c << '\n';
}Вывод:
3.14 (on GNU g++/libstdc++ and SunPro C++/roguewave) <nothing> (on MS Visual Studio 2010, SunPro C++/stlport4, CLang++/libc++)
См. также
вызывает setbuf() (публичная функция-член std::basic_streambuf<CharT,Traits>) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/basic_stringbuf/setbuf