没有编写自定义rdbuf有没有办法有效地使用字符串流?也就是说,满足这些要求:
如果有人可以给我一个明确的"不",这将是伟大的.
现在,我也使用了boost,所以如果有人可以提供一个提升替代方案来做到这一点会很棒.它必须同时具有istream和ostream接口.
使用boost::interprocess::vectorstream或boost::interprocess::bufferstream.这些课程基本满足您的所有要求.
boost::interprocess::vectorstream将不返回const char*,但它会返回const引用到内部容器类,(如一个内部向量),而不是返回一个临时字符串副本.在另一方面,boost::interprocess::bufferstream基本上允许你使用任意缓冲区作为I/O流,让您对内存分配完全控制,所以你可以很容易地使用char,如果你想缓冲.
这些都是伟大的阶级,和美妙的替代品std::stringstream,这在我看来,一直受到阻碍的事实,它不会给你内部缓冲区的直接访问,从而导致临时字符串对象的创建不必要的.遗憾的是,这些类有点模糊,隐藏在进程间库中.