如何"parametrize"输出流?
How to "parametrize" an output stream?
如何使此伪代码工作?
std::ostream ostr;
std::ofstream ofstr;
if(condition) {
ostr = std::cout;
}
else {
ofstr.open("file.txt");
ostr = ofstr;
}
ostr << "Hello" << std::endl;
这不会编译,因为std::ostream
没有公共默认构造函数。
在您的情况下,您可以使用三元运算符:
std::ostream& ostr = (condition ?
std::cout :
(ofstr.open("file.txt"), ofstr)); // Comma operator also used
// To allow fstream initialization.
此实现可以切换到其他流:
std::ofstream ofstr;
std::ostream *ostr;
ofstr.open("file.txt");
ostr = &ofstr;
*ostr << "test --> filen" << std::endl;
ostr = &std::cout;
*ostr << "test --> stdoutn" << std::endl;
相关文章:
- 如何在C++中编写 ostream 的向量,它接收所有不同的输出流,如 cout、ostringstream 和 ofs
- 在输出流中插入换行符
- 在类外部重载输入和输出流
- 通用容器的输出流
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- 获取C++输出流中元素的大小
- 用于了解输入和输出流缓冲区实际工作方式的程序
- 控制多线程程序中的输出流
- 为什么输出流首选" "而不是""?
- C++ 输出流运算符 <<() 中的字符何时加宽?
- 音频缓冲区列表,用于输出流格式已压缩的 AUHAL 单元
- 如何将值发送到标准输出流并在另一个程序中访问这些值
- 我必须如何将OpenCV输出流到我自己的远程C GUI
- 如何为提升日志和自定义类型定义输出流运算符
- 修改视频帧并将其发送回视频输出流
- 组合输入和输出流
- C++ 中的递增/递减和输出流运算符优先级
- C++输出流到文件不起作用
- 如何"parametrize"输出流?