根据cpp中的某些条件切换流

时间:2018-07-08 05:43:42

标签: c++ iostream file-handling

我有一个代码,其中有两个选项可以从文件或标准输入中读取输入。如果提供的<th scope="col"><?= $this->Paginator->sort('name')?></th> 是有效的,我想将流从<th scope="col"><?= __($this->Paginator->sort('name')) ?></th> 切换到cin。我该如何实施?此处给出了基本的基本思路代码:

fin

这段代码只是我想要的粗略想法。代码错误,因为我们无法创建file_name

的实例

1 个答案:

答案 0 :(得分:0)

看起来像C ++中原始指针的有效用例:

int main(){
    string default_file_name = "my_file.txt";
    string file_name = get_from_commandline_args();
    istream* reader = nullptr;
    ifstream fin; 
    if(file_name == default_file_name) {
        fin.open (file_name);
        reader = &fin;
    } else {
        reader = &cin;
    }
    while(true) {
    // read input
    string str;
    (*reader) >> str;
    }
}

只需将具有公共接口的类型设置为指针类型:

istream* reader = nullptr;

相应地更改其余代码。

下面是一个可编译的示例:Ex