Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将程序的输出写入两个不同的文件中_C++_C++11_Command Line_Command - Fatal编程技术网

C++ 将程序的输出写入两个不同的文件中

C++ 将程序的输出写入两个不同的文件中,c++,c++11,command-line,command,C++,C++11,Command Line,Command,我必须在ssh中从远程服务器上执行作业。 此作业(用C++编写)打印到标准输出。我必须选择结果并写入输出文件(log_tests.txt)。我知道 但是我必须将一些内容写入一个文件,而将其他内容写入另一个文件(log_tests2.txt)。我不想直接从源代码中写入正确的文件,因为我应该修改的代码上的位置大约是200:但是如果有必要对两个不同文件的输出进行通道化,我可以将cout更改为cerr。有办法吗 (服务器使用Unix,源代码使用C++11) 提前谢谢 如果将其他消息重定向到cerr,命令

我必须在ssh中从远程服务器上执行作业。 此作业(用C++编写)打印到标准输出。我必须选择结果并写入输出文件(log_tests.txt)。我知道

但是我必须将一些内容写入一个文件,而将其他内容写入另一个文件(log_tests2.txt)。我不想直接从源代码中写入正确的文件,因为我应该修改的代码上的位置大约是200:但是如果有必要对两个不同文件的输出进行通道化,我可以将cout更改为cerr。有办法吗

(服务器使用Unix,源代码使用C++11)
提前谢谢

如果将其他消息重定向到cerr,命令将是
nohup./my_executable_name>log_tests.txt 2>log_tests2.txt
。然而,是否有可能通过某种模式来识别消息的内容?如果是,可以使用grep选择适当的消息集。另一方面-如果您可以用
cerr
替换
cout
,为什么不用
streamout1
替换
cout
,并将后者替换为您自己打开的流以写入文件。因为在cout和cerr上打印时使用输出格式(iomanip和其他)如果与streamout1相等,我就不知道。。。。我在尝试你的解决方案。不,每条消息都有一个模式。因此,没有grep@ArturR.Czechowski是的,它有效。谢谢
std::cout
std::cerr
std::ostream
的实例。文件流是
std::ofstream
的实例,它在
std::ostream
之后继承。所以,你所有的iomanips和其他人都应该是安全的。@ArturR.Czechowski Ok。但是用这种方式,我必须修改源代码中的所有200个位置,而不是第一个解决方案,我必须单独修改27个位置(我用cerr替换cout,而cout保持不变)
nohup ./my_executable_name > log_tests.txt 2>&1 &