读取文件并保存在istream c ++中

时间:2014-02-06 16:57:35

标签: c++ istream

我是C ++的新手,我有这个分配来验证文件的每一行。

我必须创建一个只有一个参数的函数(const std :: istream& p_is)

我的问题是如何读取文件并将缓冲区保存到基本的istream。

我找到了如何输出它,但我无法弄清楚如何将其保存在p_is

我的代码到目前为止我在这里找到的例子

    std::filebuf fb;
if (fb.open ("test.txt",std::ios::in))
  {
    std::istream File(&fb);
    while (File)
      std::cout << char(File.get());
    fb.close();
  }

这将完美地在控制台中输出test.txt内容

提前感谢!

2 个答案:

答案 0 :(得分:1)

istream,与输入流一样。你不能写信给它。您可以创建第二个流到输出文件(ostream),或者首先创建一个追加流。

那就是说,我真的非常怀疑你是否正确地阅读了你的作业,你的要求毫无意义。

答案 1 :(得分:1)

我想我现在明白你要做什么了。您可以使用指向std::istream的指针operator<<()的重载轻松地将缓冲区的内容复制到另一个std::streambuf

void copy_buf(std::istream& is)
{
    if (std::ifstream in("test.txt"))
        is << in.rdbuf();                                                      /*
        ^^^^^^^^^^^^^^^^^                                                      */
}