提升/输出到文件

时间:2012-07-24 05:41:03

标签: c++ boost file-io stream

我可以仅使用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";
}

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

2 个答案:

答案 0 :(得分:6)

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

  1. 使用C ++ I / O流。这是推荐的方式。即使使用Boost I / O流,也都使用场景后面的标准I / O流,并使用流运算符<<>>
  2. C FILE API:fopenfprintf / fwrite / fgets / fread /等。我认为存在处理FILE的Boost I / O流,但是您仍在使用流运算符<<>>
  3. 在Windows上,使用POSIX子系统文件描述符。我认为这些也可以用于Boost I / O流。
  4. 原生文件处理。在POSIX系统(例如Linux,BSD,OSX)上,这与上面的3相同,在Windows上看到例如this link
  5. Boost I / O流不应该是一个独立的API,而是使用上述I / O系统之一来简化程序员的一些事情。

答案 1 :(得分:2)

io::stream_buffer派生自std::basic_streambuf,因此您可以使用原生basic_streambuf公共方法,也可以使用boost::filesystem个流,但所有此类都派生自std:: {1}}课程。

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