我有声明输入流
ifstream myfile;
myfile.open("input");
一个C++代码,然后有一个像命令:
myfile.getline(inp,256);
问:我怎样才能修改myfile.open("input")
使myfile
与cin
代替"input"
关联?
我不想将所有myfile.getline
命令更改为cin.getline
。
声明myfile=cin
不能编译。
我有声明输入流
ifstream myfile;
myfile.open("input");
一个C++代码,然后有一个像命令:
myfile.getline(inp,256);
问:我怎样才能修改myfile.open("input")
使myfile
与cin
代替"input"
关联?
我不想将所有myfile.getline
命令更改为cin.getline
。
声明myfile=cin
不能编译。
使用一个istream&
参考代替:
std::istream& myfile(std::cin);
分离出来成一个函数,并采取std::istream&
作为参数。然后您可以根据需要在std::cin
和myfile
上执行。
你可以把你的代码放入一个引用std :: istream的函数,例如
void process_data(std::istream & istr)
{ ... }
然后你就可以调用这个函数都与任何的std :: ifstream的,并给std :: cin:
std::ifstream myfile;
...
process_data(myfile);
process_data(std::cin);
如果您在使用std::ifstream
坚持,你可以更换基本std::istream
的std::streambuf
(std::ifstream
过载rdbuf()
所以你不能直接使用它):
std::ifstream file;
if (use_cin) {
file.std::istream::rdbuf(std::cin.rdbuf());
}