读取system()命令错误响应消息 我试图在我的Windows 10机器上使用C++系统命令执行应用程序(COQ编译器)。这是我的密码:

读取system()命令错误响应消息 我试图在我的Windows 10机器上使用C++系统命令执行应用程序(COQ编译器)。这是我的密码:,c++,compiler-errors,system,command-prompt,C++,Compiler Errors,System,Command Prompt,string dospath=“coqc afile.v>>text.txt”; int errorno=system(dospath.c_str()) 如果afile.v中存在语法/类型错误,Coq将返回一条有意义的错误消息。目前,即使Coq返回错误(我在C++应用程序的命令提示符窗口中看到错误消息),也不会在TeX.txt中接收任何内容。我想在text.txt文件中以字符串或文本的形式读取(任何)消息(由coqc返回)。我知道使用pstream.h有很多方法可以做到这一点,但我无法让它们在我

string dospath=“coqc afile.v>>text.txt”;
int errorno=system(dospath.c_str())


如果afile.v中存在语法/类型错误,Coq将返回一条有意义的错误消息。目前,即使Coq返回错误(我在C++应用程序的命令提示符窗口中看到错误消息),也不会在TeX.txt中接收任何内容。我想在text.txt文件中以字符串或文本的形式读取(任何)消息(由coqc返回)。我知道使用pstream.h有很多方法可以做到这一点,但我无法让它们在我的Windows机器上工作

使用
>
仅捕获输出流

使用
2>>
可以捕获错误流


尝试执行:
string dospath=“coqc afile.v>>text.txt 2>>error.txt”

>
仅捕获输出流

使用
2>>
可以捕获错误流


尝试执行:
string dospath=“coqc afile.v>>text.txt 2>>error.txt”
您可以将
stderr
重定向到
stdout
,如下所示:

string dospath = "coqc afile.v >> text.txt 2>&1";

但是有更好的方法来获取流,如

您可以将
stderr
重定向到
stdout
,如下所示:

string dospath = "coqc afile.v >> text.txt 2>&1";

但是有更好的方法来获取流,如

可能重复的另一种方法,即如何将标准流和错误流输出到同一个文件:如果要捕获流(在程序中),需要更多的代码:可能重复将标准流和错误流输出到同一文件的另一种方法:如果要捕获流(在程序中),则需要更多的代码: