streambuf相关内容
我正在尝试创建一个既是输入流又是输出流的类(如std::cout和std::cin)。我试图重载操作符>,但后来我明白了,编写这样的代码并不明智(因为这将是重写C++流的一种方法),而且当像std::basic_iostream、std::basic_ostream、std::basic_istream这样的类在C++标准库中可用时,维护是非常困难的,因为我必须为每种类型重载操作符。因此,
..
我想使用 boost.asio 检查串行端口上的传入数据包.每个数据包都以一个字节长的标头开始,并指定已发送的消息类型.每种不同类型的消息都有自己的长度.我要编写的函数应该不断地监听新的传入消息,当它找到一个它应该读取它,并调用其他函数来解析它.我目前的代码如下: void check_for_incoming_messages(){boost::asio::streambuf 响应;boost
..
我想使用 Mr-Edd 的 iostreams 文章中的这个片段在某处打印 std::clog. #include #include #include #include int main(){std::ostringstream oss;//让 clog 使用来自 oss 的缓冲区std::streambuf *former_buff =std::clog.rdbuf(oss.rdbuf());
..
显然 boost::asio::async_read 不喜欢字符串,因为 boost::asio::buffer 的唯一重载允许我创建 const_buffers,所以我坚持将所有内容读入流缓冲. 现在我想将 streambuf 的内容复制到一个字符串中,但它显然只支持写入 char* (sgetn()),使用 streambuf 创建一个 istream 并使用 getline(). 有
..
十年前我曾经是 C++ 专家,但在过去的 10 年里我一直在编写 Java.我刚刚开始了一个使用小型第三方 XML 解析器的 C++ 项目.XML 解析器接受 STL istream.我的 XML 数据来自 Windows COM IStream.我以为我会做正确的事情并创建一个适配器来获取 IStream 数据并通过 istream 将其呈现给 XML 解析器. 我遵循了 http://w
..
来自 http://www.cplusplus.com/reference/ios/ios/rdbuf/: 某些派生的流类(例如stringstream和fstream)维护它们自己的内部流缓冲区,它们在构造时与之关联.调用此函数以更改关联的流缓冲区对该那个内部流缓冲区无效:该流将具有一个关联的流缓冲区不同于其内部流缓冲区(尽管流的输入/输出操作始终使用此成员函数返回的关联的流缓冲区).
..
我想要一个用于写入自动调整大小数组的接口.一种方法是使用通用std::ostream *. 然后考虑ostringstream是否是目标: void WritePNG(ostream *out, const uint8_t *pixels); void *WritePNGToMemory(uint8_t *pixels) { ostringstream out; WriteP
..
我一直在研究创建自己的ostream以及与此相关的streambuf来处理我的ostream的缓冲区.实际上,大多数功能都可以正常工作,我可以将(
..
我尝试制作一个压缩/解压缩模块,然后使用istringstream进行压缩,并使用ostringstream进行解压缩。 我的问题是在用压缩数据填充istringstream之后,我无法将此流转换为ostringstream。我尝试: iss.rdbuf(oss.rdbuf()); 作为输入和输出类型匹配,但不起作用。 您有任何想法吗? 预先感谢。 解决方案
..
在他的答案中,特别是在链接的Ideone示例,@ Nawaz显示了如何更改 cout 的缓冲区对象以写入其他内容。这让我想到了利用它来填充 streambuf : $ b来准备 cin 的输入: $ b #include #include 使用命名空间std; int main(){ streambuf * coutbuf = cou
..
我想使用boost.asio在串行端口上检查传入的数据包.每个数据包都将以一个一字节长的标头开始,并指定已发送的消息类型.每种不同类型的消息都有其自己的长度.我要编写的函数应不断侦听新传入的消息,当发现该消息时,应该读取该消息,并调用其他函数对其进行解析.我当前的代码如下: void check_for_incoming_messages() { boost::asio::strea
..
寻找boost :: asio(和他自己的boost)决定编写异步服务器.为了存储传入的数据,我使用boost :: asio :: streambuf. 在这里,我有一个问题.当我从客户端收到第二条消息时,随后我看到缓冲区中包含来自先前消息的数据. 虽然我在输入缓冲区调用了Consume方法.怎么了? class tcp_connection // Using shared_ptr and
..
什么是“别名流缓冲区”?我在 answer的评论中遇到了该词我的。 解决方案 我以前从未听说过该术语,但是在您引用的线程中, 的使用者也给出了一个示例: 的两个流使用相同的streambuf。 当然,只是因为两个流不使用相同的 streambuf,并不意味着写入到它们中的数据最终不会在同一位置出现 ;他们没有为 相同的接收器加上别名,如果那是什么意思。过滤 个stream
..
在我的“>上一个中问题,我问如何从内存中读取文件和从文件中读取数据.因为我的整个文件都在内存中,所以我想以类似的方式读取它. 我发现wifstream file; wstring line2; file.open("C:\\Users\\Mariusz\\Desktop\\zasoby.txt"); if(file.is_open()) { while(file.good()) { getl
..
为了理解输入流是如何工作的,我设计了以下两个类: #include class my_streambuf:public std :: streambuf { private: std :: streambuf * buffer; char ch; protected: virtual std :: streambuf :: int
..
嗨,伙计们。 我需要编译一些项目。 我从那里安装Visual C ++ 6.0 + Microsoft Platform SDK 2003 http://www.microsoft.com/downloads/en/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en #requirements
..
我编写了一个自定义流类,它输出缩进的文本,并具有可以更改缩进级别的操纵器。所有缩进的工作都在一个自定义流缓冲区类中实现,它由流类使用。缓冲区是工作(即文本缩进在输出),但我不能让我的操纵器工作。我在很多地方阅读ostream(我的类扩展)重载操作符
..
以下代码简单地测试在使用 std :: istream underflow >在 std :: stringbuf 上读取。 #include #include #include class TestStringBuf: public std :: stringbuf { public: int_ty
..
我尝试创建直接从原始内存缓冲区读取的 istream 。 在这里的另一个帖子中执行此操作的好方法: class membuf:public basic_streambuf { public: membuf(char * p,size_t n){ setg(p,p,p + n); } }; 然后我创建我的 istream code> me
..
我想实现一个流缓冲区,我有麻烦使 overflow()工作。我调整缓冲区10个字符,并使用 setp 重置缓冲区。然后我将指针增加回我们离开的地方。由于某种原因,输出不正确: template ; class stringbuf:public std :: basic_stri
..