【发布时间】:2015-04-23 01:29:13
【问题描述】:
假设我有一个名为print 的简单函数,其中有一个循环使用cout 将1-5 打印到控制台。
有没有办法可以做类似的事情:
file << print ();
要将print 的输出保存到文件中?显然假设我用ofstream 正确打开了文件,以及所有内容。
【问题讨论】:
假设我有一个名为print 的简单函数,其中有一个循环使用cout 将1-5 打印到控制台。
有没有办法可以做类似的事情:
file << print ();
要将print 的输出保存到文件中?显然假设我用ofstream 正确打开了文件,以及所有内容。
【问题讨论】:
假设print 是一个void 函数,其输出硬编码为cout,您无能为力:输出将由执行环境对输出流的分配控制(默认为控制台或使用>myoutput.txt 重定向文件)。
如果您希望您的程序控制输出的去向,请将ostream& 传递给您的print 函数,并将其用于输出:
void print(ostream& ostr) {
// use ostr instead of cout
ostr << "hello, world!" << endl;
}
如果您希望print 输出到控制台或默认输出,请调用
print(cout);
如果您希望它写入文件,请创建 ofstream,并将其传递给 print:
ofstream file("hello.txt");
print(file);
【讨论】:
“有办法吗?”:不……不改变print() 和/或在调用者中添加更多代码。当你说...
file << print();
...发送到文件流的内容是print() 返回的内容。正如你所说的print() 正在将所需的输出发送到std::cout,返回值表面上不会在file 中包含我们想要的任何内容,所以除非它是一个空字符串,否则调用者最好不要写@987654328 @。
相反,调用者应该在调用print() 之前将输出转移到cout 到file:James' answer here 显示了如何做到这一点。
【讨论】: