将ifstream复制到istream C ++ 14

时间:2016-11-19 18:27:53

标签: c++ io c++14

我想做类似的事情,但一直遇到错误,关于istream的复制赋值运算符是受保护的。我希望有一种方法可以将输入从cin切换到我程序中某个未知点的文件输入。

then()

2 个答案:

答案 0 :(得分:3)

您无法复制流"。流不是容器;这是一个数据流。

真正试图做的是重新绑定引用。好吧,你也不能这样做(根本就没有它的语法,因此你的编译器认为你正在尝试复制 - 分配流本身),所以请改用指针:

#include <iostream>
#include <fstream>
using namespace std;

int main() {
   istream* in = &cin;
   ifstream f{"file.txt"};
   in = &f;
   // Now you can read input from the file.
   string s;
   while(*in >> s) {
     cout << s << endl;
   }
}

只要f指向in,就确保String myFile = "filename.txt"; PrintStream out = new PrintStream(new FileOutputStream(myFile))); out.print(text); 能够存活。

答案 1 :(得分:1)

您可以通过使用rdbuf重新分配流缓冲区来实现您的目标:

in.rdbuf(f.rdbuf());

demo