如何使用C ++ STL将STDIN转储到文件中?

时间:2012-09-18 09:33:40

标签: c++ stl

我正在编写此程序,以便在此问题中找到解决方法:Why do I get 'Bad file descriptor' when trying sys.stdin.read() in subversion pre-revprop-change py script?

注意:

  • 来自STDIN的内容可以是任意二进制数据。
  • 请使用C ++ STL函数,iostream,ifstream等。
  • 如果文件创建/编写失败,我想抓住异常以了解案例。

2 个答案:

答案 0 :(得分:3)

最短的版本,也许是大多数系统中最快的版本是:

#include <fstream>
#include <iostream>
int main() {
    std::ofstream("cin.txt", std::ios_base::binary) << std::cin.rdbuf();
}

答案 1 :(得分:1)

我认为复制方法就是你想要的:

template<class InputIterator, class OutputIterator>
OutputIterator copy ( InputIterator first, InputIterator last, OutputIterator result )
{
  while (first!=last) *result++ = *first++;
  return result;
}

例如:

copy(istream_iterator<string>(cin)
       , istream_iterator<string>()
       , ostream_iterator<string>(fout, "\n"));

这里的fout是一个文件流迭代器。