2012-09-23 55 views
0

我有声明输入流

ifstream myfile; 
myfile.open("input"); 

一个C++代码,然后有一个像命令:

myfile.getline(inp,256); 

问:我怎样才能修改myfile.open("input")使myfilecin代替"input"关联?

我不想将所有myfile.getline命令更改为cin.getline

声明myfile=cin不能编译。

回答

3

使用一个istream&参考代替:

std::istream& myfile(std::cin); 
2

分离出来成一个函数,并采取std::istream&作为参数。然后您可以根据需要在std::cinmyfile上执行。

1

你可以把你的代码放入一个引用std :: istream的函数,例如

void process_data(std::istream & istr) 
{ ... } 

然后你就可以调用这个函数都与任何的std :: ifstream的,并给std :: cin:

std::ifstream myfile; 
... 
process_data(myfile); 
process_data(std::cin); 
0

如果您在使用std::ifstream坚持,你可以更换基本std::istreamstd::streambufstd::ifstream过载rdbuf()所以你不能直接使用它):

std::ifstream file; 
if (use_cin) { 
    file.std::istream::rdbuf(std::cin.rdbuf()); 
}