【发布时间】:2018-07-08 05:43:41
【问题描述】:
我有一个代码,其中我有两个选项可以从文件或标准输入读取输入。如果提供的file_name 是有效的,我想将流从cin 切换到fin。我怎么能实现它?这里给出一个基本的大致思路代码:
int main(){
string default_file_name = "my_file.txt";
string file_name = get_from_commandline_args();
istream reader; // can't create this as constructor is private
if(file_name == default_file_name) {
ifstream fin;
fin.open (file_name);
reader = fin;
} else {
reader = cin;
}
while(true) {
// read input
string str;
reader >> str;
}
}
这段代码只是我想要的粗略想法。代码错误,因为我们无法创建 istream 的实例
【问题讨论】:
-
除了天真之外,你的实现有什么问题?更“正确”的方法是让两类阅读器实现相同的接口,一类使用标准输入,另一类使用文件。
-
@o_weisman 我们无法创建 istream 的实例,该行
istream reader;将不起作用
标签: c++ iostream file-handling