假设我有一个名为print
的简单函数,其中一个循环使用cout
将1-5打印到控制台。
有没有办法可以做类似的事情:
file << print ();
要将print
的输出保存到文件中吗?显然假设我正确地使用ofstream
和所有内容打开文件。
答案 0 :(得分:2)
假设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);
答案 1 :(得分:2)
&#34;有办法吗?&#34;:没有......不是没有改变print()
和/或在呼叫者中添加更多代码。当你说...
file << print();
...发送到文件流的内容是print()
返回的内容。正如您所说print()
正在向std::cout
发送所需的输出,返回值表面上似乎没有我们想要的任何内容file
,所以除非它&# 39;是一个空字符串,调用者最好不要写file << print();
。
相反,在致电cout
之前,来电者应将输出转移至file
至print()
:James' answer here显示如何完成此操作。