草庐IT

streambuf

全部标签

c++ - 是否有将主​​机字节顺序转换为网络字节顺序的 std::streambuf 版本?

有没有std::streambuf-将多字节值转换为网络字节顺序的类似机制?特别是,BoostAsio是否提供这样的原语?这是我希望流缓冲区执行的操作的示例:uint64_tx=42ull;network_streambufb1;std::ostreamos(&b1);os>y;//ntohll编辑:答案表明这是思考问题的错误方式:流缓冲区只是提供对字符序列的访问,它们的工作不是执行格式化I/O或转换。我可能会实现一个小型缓冲类,为operator提供必要的重载。和operator>>执行转换。 最佳答案 不,我会告诉你原因。ist

c++ - 继承自 std::basic_streambuf 以写入套接字

我想编写一个我自己的日志记录库,为日志条目发送到的任何地方提供抽象。C++的IO库已经通过std::stringstream和std::fstream提供了这种抽象。我还希望能够从套接字读取/向套接字写入。我读到扩展标准库的正确方法是继承std::basic_streambuf。我不明白的是,如果像std::basic_filebuf那样从std::basic_streambuf继承,那么哪里需要std::ifsream、std::ofstream和std::fstream类?我不能只用std::basic_streambuf的子类实例替换某些流的缓冲区,它输出我想要的地方吗?到目前为

c++ - 使用streambuf作为缓冲区来 boost asio读写

我正在使用此代码阅读socket_.async_read_some(boost::asio::buffer(data_,max_length),boost::bind(&session::handle_read,this,boost::asio::placeholders::error,boost::asio::placeholders::bytes_transferred));这就是写作boost::asio::async_write(socket_,boost::asio::buffer(data_,bytes_transferred),boost::bind(&session::

c++ - 如何创建自己的 ostream/streambuf?

出于教育目的,我想创建一个ostream和流缓冲区来做:在执行存储在双端队列容器中,而不是使用std:cout或写入文件记录额外的数据,例如我做了多少次我尝试过重载,但失败了。我尝试通过做来重载写入ostream&write(constchar*s,streamsizen)在我的basic_stringstream2类中(我将粘贴basic_stringstream复制到我的cpp文件中并对其进行了修改),但代码继续使用basic_ostream。我查看了代码,看起来我需要重载xsputn(本页未提及http://www.cplusplus.com/reference/iostream

c++ - 将 streambuf 的内容复制到字符串

显然boost::asio::async_read不喜欢字符串,因为boost::asio::buffer的唯一重载允许我创建const_buffers,所以我坚持将所有内容读入流缓冲区。现在我想将streambuf的内容复制到一个字符串中,但它显然只支持写入char*(sgetn()),使用streambuf创建一个istream并使用getline()。有没有其他方法可以在不过度复制的情况下创建带有streambufs内容的字符串? 最佳答案 不知道算不算“过度复制”,不过可以用stringstream:std::ostring

c++ - 究竟什么是streambuf?我该如何使用它?

我正在尝试更多地了解I/O流如何在C++中工作,但我真的很困惑何时使用什么。streambuf到底是什么?与string、istream或vector相比,何时使用streambuf?(我已经知道最后三个,但不知道streambuf与它们的比较,如果有的话。) 最佳答案 在streambuf的帮助下,我们可以在一个更更低的层次工作。它允许访问底层缓冲区。这里有一些很好的例子:Copy,load,redirectandteeusingC++streambufs并引用比较,这可能会有所帮助,查看更多详情:IOstreamLibrary

c++ - 如何在 C++ 中编写自定义输入流

我目前正在学习C++(来自Java),并且正在尝试了解如何在C++中正确使用IO流。假设我有一个包含图像像素的Image类,并且我重载了提取运算符以从流中读取图像:istream&operator>>(istream&stream,Image&image){//Readtheimagedatafromthestreamintotheimagereturnstream;}所以现在我可以读取这样的图像了:Imageimage;ifstreamfile("somepic.img");file>>image;但现在我想使用相同的提取运算符从自定义流中读取图像数据。假设我有一个文件,其中包含压缩

c++ - 如何在 C++ 中编写自定义输入流

我目前正在学习C++(来自Java),并且正在尝试了解如何在C++中正确使用IO流。假设我有一个包含图像像素的Image类,并且我重载了提取运算符以从流中读取图像:istream&operator>>(istream&stream,Image&image){//Readtheimagedatafromthestreamintotheimagereturnstream;}所以现在我可以读取这样的图像了:Imageimage;ifstreamfile("somepic.img");file>>image;但现在我想使用相同的提取运算符从自定义流中读取图像数据。假设我有一个文件,其中包含压缩