标准输出的命令行重定向也应该总是也重定向cout吗?

问题描述 投票:1回答:2

我尚不清楚从命令行将stdout重定向到文件是否也应该始终重定向cout(并且对于stderr和cerr同样如此)。

作为测试,我编写了以下代码。我的理解是,将sync_with_stdio的参数设置为true(这是默认值),cout会将其输出流式传输到stdout,在这种情况下,重定向stdout也会重定向cout,这就是在Win10机器上使用VS时发生的情况。 >

但是,当我将参数更改为false时,所有三个输出仍然被重定向。我有一半希望只重定向printf输出,而cout输出仍会显示。

由于我显然遗漏了一些东西,因此请对发生的情况进行解释。谢谢!

#include <iostream>
int main()
{
   std::ios::sync_with_stdio(false);
   std::cout << "a\n";
   std::printf("b\n");
   std::cout << "c\n";
}

我尚不清楚从命令行将stdout重定向到文件是否也应该始终重定向cout(并且对于stderr和cerr同样如此)。作为测试,我编写了以下代码。我的理解...

c++ command-line stdout cout output-redirect
2个回答
2
投票

您误解了sync_with_stdio的含义。它与重定向完全无关,仅涉及两个流之间的synchronization


0
投票

rdbuf(强调我的):

© www.soinside.com 2019 - 2024. All rights reserved.