jjzjj

streambuf

全部标签

c++ - 请帮我理解streambuf、stringbuf和stringstream之间的区别?

请有人帮助我了解“streambuf、stringbuf和stringstream”之间的区别。voidf1(std::stringconst&text){std::stringstreaminStream(text);cout或者如果我写voidf2(std::stringconst&text){std::stringbufinStream(text);cout两者都显示相同的结果。什么时候应该使用stringbuf或stringstream?提前致谢。 最佳答案 stringbuf被stringstream使用,它为流提供缓冲区

c++ - 请帮我理解streambuf、stringbuf和stringstream之间的区别?

请有人帮助我了解“streambuf、stringbuf和stringstream”之间的区别。voidf1(std::stringconst&text){std::stringstreaminStream(text);cout或者如果我写voidf2(std::stringconst&text){std::stringbufinStream(text);cout两者都显示相同的结果。什么时候应该使用stringbuf或stringstream?提前致谢。 最佳答案 stringbuf被stringstream使用,它为流提供缓冲区

c++ - 如何复制或重用 boost::asio::streambuf?

我在boostasio上实现带有一些业务逻辑的http代理服务器。在第(1)点中,boost::asio::streambufresponse_包含httpheader和部分http正文。用http_response::parse解析后,缓冲区boost::asio::streambufresponse_为空。在(2)处,我检查所有业务逻辑并读取正文,如果header中有Content-Lengthheader。如果response_数据符合特定条件,我想将原始response_缓冲区发送到另一个套接字(3)。问题是解析后缓冲区为空。有没有办法复制boost::asio::stream

c++ - 从 streambuf 派生而不重写相应的流

几天前,我决定编写一个使用mmap和预读的streambuf子类会很有趣。我查看了我的STL(SGI)如何实现filebuf并意识到basic_filebuf包含一个FILE*。所以从basic_filebuf继承是不可能的。所以我继承自basic_streambuf。然后我想将我的mmapbuf绑定(bind)到一个fstream。我认为我唯一要做的就是复制filebuf的隐式接口(interface)...但这是一个明显的错误。在SGI中,basic_fstream拥有一个basic_filebuf。无论我是否调用basic_filestream.std:::::ios::rdbu

c++ - 如何通过自定义的 streambuf 设置流的 badbit

我有一个自定义的std::streambuf。像这样的东西:classmybuf:publicstd::streambuf{...virtualstd::streambuf::int_typeunderflow(){if(eof){returntraits_type::eof();}...}...std::istreamstream(newmybuf(...));通过在underflow()函数上返回eof来设置流的eof标志。如何设置流的badbit标志?overflow()函数应该抛出异常吗? 最佳答案 抛出异常确实是可行的方法

c++ - C++ streambuf 方法可以抛出异常吗?

我正在尝试找到一种方法来获取读取或写入流的字符数,即使出现错误并且读/写结束很短也是可靠的。我正在做这样的事情:returnstream.rdbuf()->sputn(buffer,buffer_size);但是如果允许overflow的streambuf实现抛出异常,这将不起作用。是吗?我无法在任何地方找到它的记录。 最佳答案 basic_streambuf::overflow允许在失败时抛出异常,如27.6.3.4.5/6中所述,遗憾的是没有办法确保编译时该函数永远不会抛出异常。看来您的运气已经不多了,要100%确定overfl

c++ - 如何将 boost::asio::streambuf 转换为 std::string?

这个问题在这里已经有了答案:Copyastreambuf'scontentstoastring(11个答案)关闭7年前。我想将boost::asio::streambuf转换为std::string。如何轻松做到这一点?

c++ - 使用 boost::asio::streambuf 的代码导致段错误

我在使用asio::streambuf时遇到过问题,希望有人能告诉我我是否错误地使用了该类。当我运行此示例代码时,它会出现段错误。为什么?让事情变得更加困惑的是,这段代码适用于Windows(VisualStudio2008),但不适用于Linux(使用gcc4.4.1)。#includeusingnamespacestd;intmain(){boost::asio::streambufStream;//Put4bytesintothestreambuf...intSetValue=0xaabbccdd;Stream.sputn(reinterpret_cast(&SetValue),

c++ - 具有共享 streambuf 的 istream 和 ostream 对于双工 I/O 是相互线程安全的吗?

我已经为缓冲网络套接字I/O派生了一个自定义streambuf,覆盖下溢、上溢和同步,以便下溢与其他两个集相互线程安全,(我有单独的输入和输出内部缓冲区).这工作正常,但我想将它用于全双工I/O,其中一个线程可以输入而另一个线程正在输出,所以我想使用istream作为接收线程,使用ostream作为发送线程,同时共享网络streambuf因为它抽象了所有套接字的东西。我的问题是,如果输入和输出缓冲区是分开的,streambuf成员在多大程度上受istream上的输入操作的影响与受ostream上的输出操作影响的streambuf成员脱节?能够做到这一点会更好,而不是必须将套接字的东西从

c++ - 我什么时候调用 boost::asio::streambuf::consume() 和 boost::asio::streambuf::commit()?

我试图理解boost::asio::streambuf::consume()和boost::asio::streambuf::commit()调用.在文档中,我们有示例,boost::asio::streambufb;std::ostreamos(&b);os和boost::asio::streambufb;//reserve512bytesinoutputsequenceboost::asio::streambuf::mutable_buffers_typebufs=b.prepare(512);size_tn=sock.receive(bufs);//receiveddatais"