我需要一个 C++ 函数,将一些文本数据(多行)转储到控制台:
void DumpData() const
{
std::cout << "My Data 1" << std::endl;
std::cout << "My Data 2" << std::endl;
}
这应该是默认行为,但是,还必须可以传递一些其他流对象来代替 std::cout
,如下所示:
void DumpData(std::ostream& Stream = std::cout) const
{
Stream << "My Data 1" << std::endl;
Stream << "My Data 2" << std::endl;
}
现在回答我的问题:
- 我应该为参数使用的正确类型是什么(本例中为
std::ostream&
)? - 默认值是多少,可以直接使用
= std::cout
吗?
而且(3.),在调用这个函数之后,如果我传递自己的流对象,我需要逐行迭代这个流中的所有字符串。实现这一目标的最佳方法是什么?
最佳答案
你为什么不自己尝试一下呢?
这是代码 in Coliru以 std::cout 和 std::stringstream 为例(显然删除了 DumpData 的 const 性):
#include <iostream>
#include <sstream>
void DumpData(std::ostream& Stream = std::cout)
{
Stream << "My Data 1" << std::endl;
Stream << "My Data 2" << std::endl;
}
int main() {
DumpData();
std::stringstream ss;
DumpData(ss);
std::string l;
while(std::getline(ss, l)) {
std::cout << l << std::endl;
}
return 0;
}
输出是您所期望的。
关于c++ - 打印到控制台或字符串/流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43001139/