根据 cpp 中的某些条件切换流
Switch streams based on some condition in cpp
我有一个代码,其中我有两个选项可以从文件或标准输入中读取输入。我想将流从cin
切换到fin
,以防提供的file_name
是有效的。我该如何实现它?这里给出了一个基本的粗略想法代码:
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
的实例
看起来像是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;
相应地更改代码的其余部分。
下面是一个可编译的示例:例如
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- Linux的Cpp上的计时器
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 命名空间中具有.h和.cpp文件的类
- CPP 带有条件语句的内在事物
- 根据 cpp 中的某些条件切换流
- 使用多个.cpp文件,可以替代C 中的条件汇编
- Cpp 切换语句不会输出条件集
- 在什么条件下,数据库在从 cpp 执行选择查询时不会关闭游标
- 条件语句,用于验证事务模块(.cpp)标头中#define(d)整数提供的范围
- 在 CPP 中将函数调用定时为 if 语句条件
- 针对外部标志(cpp)的循环条件的更改
- 循环终止条件错误的 cpp 向量
- 在什么条件下必须编译 cpp 代码并将其链接到 exe 中
- 在.cpp文件中使用条件类型
- 是否有一种方法可以将一个条件设置为gdb中的所有断点,用于调试Cpp代码
- 从.h和.cpp进行条件编译
- 如果条件满足,包括cpp文件