我有一个带
的C ++代码ifstream myfile;
myfile.open("input");
然后有如下命令:
myfile.getline(inp,256);
问题:如何修改myfile.open("input")
,以便myfile
与cin
而不是"input"
相关联?
我不想将所有myfile.getline
命令更改为cin.getline
。
声明myfile=cin
无法编译。
答案 0 :(得分:3)
改为使用istream&
引用:
std::istream& myfile(std::cin);
答案 1 :(得分:2)
将其分隔成一个函数,并将std::istream&
作为参数。然后,您可以根据需要同时执行std::cin
和myfile
。
答案 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()