声明输入流

时间:2012-09-23 19:52:28

标签: c++

我有一个带

的C ++代码
ifstream myfile;
myfile.open("input");

然后有如下命令:

myfile.getline(inp,256);

问题:如何修改myfile.open("input"),以便myfilecin而不是"input"相关联?

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

声明myfile=cin无法编译。

4 个答案:

答案 0 :(得分:3)

改为使用istream&引用:

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

答案 1 :(得分:2)

将其分隔成一个函数,并将std::istream&作为参数。然后,您可以根据需要同时执行std::cinmyfile

答案 2 :(得分:1)

您可以将代码放入一个引用std :: istream的函数中,例如

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

然后你可以用任何std :: ifstream和std :: cin:

来调用这个函数
std::ifstream myfile;
...
process_data( myfile );
process_data( std::cin );

答案 3 :(得分:0)

如果您坚持使用std::ifstream,则可以替换基座std::streambuf的{​​{1}}(std::istream重载std::ifstream,这样您就无法使用它直接地):

rdbuf()