将 boost stream_buffer 与 std::ofstream 结合使用
Using boost stream_buffer with std::ofstream
从 boost iostreams 教程中,我读到可以将 boost stream_buffer 与 std::ostream 一起使用,如教程所示:
#include <ostream>
#include <boost/iostreams/device/file.hpp>
#include <boost/iostreams/stream.hpp>
namespace io = boost::iostreams;
int main()
{
io::stream_buffer<io::file_sink> buf("log.txt");
std::ostream out(&buf);
// out writes to log.txt
}
如何使用 boost stream_buffer 来创建 std::ofstream?我已经实现了一个自定义接收器设备,可用于创建升压stream_buffer。使用流缓冲区,我可以创建std::ostream,但不能创建std::ofstream。
// ...
io::stream_buffer<my_custom_file_sink> mybuf("myfile.txt"); // Creating stream_buffer works
std::ostream out(&mybuf); // Here I would like to use std::ofstream
// ...
我需要这个,因为我正在使用的另一个库需要std::ofstream&。但不幸的是,将 boost stream_buffer传递给 std::ofstream 构造函数无法编译。任何可能的解决方法?
您可以做的是使用其默认构造函数创建一个std::ofstream
,然后将缓冲区分配给它:
io::stream_buffer<my_custom_file_sink> mybuf("myfile.txt");
std::ofstream out;
out.std::ostream::rdbuf(&mybuf); // Call the base class version.
相关文章:
- 多态性和功能结合
- 将 Vulkan 与 SFML 结合使用?
- std::ofstream 作为类成员删除复制构造函数?
- 将 c++ 生成器应用程序与外部 dll 结合使用
- 如何将增强MSM与增强信号结合使用?
- MS Visual Studio 解决方案结合了非托管C++项目和 C# 项目
- ofstream::close() 是否在 Linux 上调用同步?
- 如何在软件代码中使用ofstream创建文件
- 函数未在作用域中声明 / 如何结合使用 header.h、header.cpp 和 main.cpp?
- Ofstream和IFSTREAM有什么区别?
- 使用 libssh 从 SFTP 服务器下载文件并使用 C++ 将其写入 ofstream?
- C++:std::ofstream 方法 open() 在第二次迭代时擦除打开的 ifstream 文件
- fstream / ifstream / ofstream 对象如何转换为布尔值
- 将预编译的 C 共享库与 JNI/NDK 结合使用
- 使用 auto_ptr<std::ofstream> 对象
- C++ 将函数指针与最佳性能相结合
- 将 Lua 与 C++ DLL 结合使用
- 为什么push_back和emplace_back结合在一起时,会有不同的行为
- 传递数组结构、ofstream 和 interger 以运行
- 将 boost stream_buffer 与 std::ofstream 结合使用