2

我可以仅使用 boost 库将一些文本输出到文件吗?

我拥有的代码(官方文档):

#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
    out << "abc";
}

还有其他方法吗?(我不想使用标准流)。提前致谢。

4

2 回答 2

7

C++ 程序中的输入和输出可以通过四种方式完成:

  1. 使用 C++ I/O 流。这是推荐的方式。即使使用 Boost I/O 流,也都是在幕后使用标准 I/O 流,并使用流运算符<<>>.
  2. C FILEAPI :fopen, fprintf////等。我认为有 Boost I/O 流可以处理,但是您仍在使用流运算符和.fwritefgetsfreadFILE<<>>
  3. 在 Windows 上,使用 POSIX 子系统文件描述符。我认为这些也可以用于 Boost I/O 流。
  4. 本机文件处理。在 POSIX 系统(例如 Linux、BSD、OSX)上,这与上面的 3 相同,在 Windows 上,请参见例如此链接

Boost I/O 流不应该是一个独立的 API,而是使用上述 I/O 系统之一来为程序员简化一些事情。

于 2012-07-24T06:59:03.363 回答
2

io::stream_buffer派生自std::basic_streambuf,因此您可以使用本机basic_streambuf公共方法,也可以使用boost::filesystem流,但所有这些类都是从std::类派生的。

http://www.boost.org/doc/libs/1_50_0/libs/filesystem/doc/reference.html#File-streams

于 2012-07-24T06:48:05.287 回答