C++,即使在命令行中使用 file.out >打印到屏幕

C++, Print to screen even with > file.out in command line

本文关键字:gt 打印 out 屏幕 命令行 C++ file      更新时间:2023-10-16

我正在操作文件中的字符,并使用命令行(我是新手)将它们发送到另一个文件。

a.out -d 5 < garbage01.txt > garbage02.txt

字符将通过cout.put(char)进入garbage02.txt。如果命令行参数没有验证,我只想在屏幕上打印一条简单的消息来说明这一点,但所有内容都转到garbage02.txt。不能更改命令的布局。

我希望这是一个非常直接的问题,我只是很难找到一个解决方案。

通常将错误消息写入stderr,而将正常输出写入stdout。输出错误信息到stderr do

std::cerr << "Something went wrongn";

(您也可以对fprintf这样做,但通常不需要这样做。)

写入stderr的输出不会被

重定向
> someFile

但只能

2> someFile

这样用户可以选择在哪里分别看到"正常"answers"错误"的输出。

std::cerr也有一个很好的属性,它不缓冲输出(不像std::cout)。这意味着用户将在程序在输出行之后继续执行之前看到错误消息。

如果您不需要这种非缓冲区功能,请使用std::clog

您可以使用/dev/tty file,它是一个特殊的文件,表示当前进程的终端。

#include <fstream>
std::ofstream screen("/dev/tty");
screen<<"Your message"<<std::endl;

使用std::cerr打印到屏幕

std::cerr << "Some message" << std::endl;

或更改终端命令

a.out -d 5 < garbage01.txt 2> garbage02.txt    # Redirect stderr stream only