【发布时间】:2016-12-15 10:07:01
【问题描述】:
我正在使用命令行和重定向符号启动我的程序
程序 > out.txt
有没有什么方法可以让一些 cout 调用忽略 > 操作符而仍然显示在控制台中?
我想要的是有一个控制台菜单会出现在控制台中,但其余的会被重定向到文件。
谢谢。
【问题讨论】:
我正在使用命令行和重定向符号启动我的程序
程序 > out.txt
有没有什么方法可以让一些 cout 调用忽略 > 操作符而仍然显示在控制台中?
我想要的是有一个控制台菜单会出现在控制台中,但其余的会被重定向到文件。
谢谢。
【问题讨论】:
不,没有。
> 将整个 stdout 流重定向到文件,而不是特定写入该流。如果要写入多个位置,则要使用多个流。例如,您可以使用stderr:
cout << "redirected" << endl;
cerr << "not redirected" << endl;
【讨论】:
cout2 << "not redirected" << endl;
cout。如果您想将一些输出写入文件,只需创建一个std::ofstream。
stdout,以便教师可以轻松地将其重定向到文件。我想这样做的原因是因为控制台菜单有额外的点,但如果你说的是真的,我不知道如何组合这些。
cerr 的选项仍然有效,因为cerr 已经绑定到控制台。此外,您可以创建与控制台关联的新流。我知道的一种方式是ofstream fout("console$"),但我不确定它是否可移植。
您可以重新格式化您正在做的事情,并在您想要转到 stdout 时使用 std::cout,并使用 Log 函数写入您指定为程序输入的文件。
有一个Menu 函数显示到std::cout 可能更简洁,并且Log 文件能够配置到它的结束位置。
【讨论】: