根据属性选择fstream或cout
Choose fstream or cout depending on attributes
如果有 argv[1]
,我想将一些数据放在新的 ofstream(argv[1])
即带名称 argv[1]
的文件中。但是,如果没有这样的参数,我想改用cout
。
我尝试了
std::ostream& output = argc >= 1 ? std::fstream(argv[0]) : std::cout;
,但由于删除的构造函数,它甚至没有编译。
您可以创建一个fstream实例并延迟打开它直到必要。
std::fstream file;
if (argc > 1)
file.open(argv[1]);
std::ostream& output = argc > 1 ? file : std::cout;
这是一个真正的C 11解决方案:
ostream& out = [=]() -> ostream& {
if (argc>1) {
static fstream fs(argv[1]);
return fs;
}
return cout;
}();
您可以尝试
if (argc >= 1)
{
std::fstream Output(argv[0]);
Process_data(Output);
}
else
Process_data(std::cout);
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 在fstream期间忽略空行
- std::cout.imbue()多重调用
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 为什么我应该在异常处理中使用std::cerr而不是std::cout
- 使用fstream对txt文件中的数字进行循环
- 为什么 fstream 在打开带有格式的文件时会导致分段错误?
- 无法打开 fstream C++文件,即使它与 .cpp 位于同一位置
- 在作为静态成员包含在另一个类中的类的构造函数中使用 cout
- 在 COUT 语句中使用 COUT 调用函数
- GCC 4.8.2 自动矢量化由于 cout 而失败
- std::cout输出int时出现编译错误
- 在这种情况下显式调用时,std::cout 如何更改析构函数的行为?
- C++ Setter/Getter,cout 工作,printf 失败
- 使 std::fstream 写入文件末尾,但从头开始读取
- C++ cout 将双精度对齐到精度 2 并正确对齐
- 结构元素名称要 cout?
- 根据属性选择fstream或cout
- c++ cout instead of fstream