【问题标题】:read file and save in istream c++读取文件并保存在 istream c++ 中
【发布时间】:2014-02-06 16:57:34
【问题描述】:

我是 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的内容了

提前致谢!

【问题讨论】:

    标签: c++ istream


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      istream,如 input 流。你不能给它写信。您可以为输出文件 (ostream) 创建第二个流,或者首先创建一个附加流。

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

      【讨论】:

      • 顺便说一句,为了打开一个文件,您跳过了太多的环节,一个简单的ifstream file("test.txt"); 就可以做到。