gpt4 book ai didi

c++ - 命令行重定向标准输出也应该始终重定向cout吗?

转载 作者:行者123 更新时间:2023-12-02 10:06:41 27 4
gpt4 key购买 nike

我尚不清楚从命令行将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";
}

最佳答案

您误解了 sync_with_stdio 的意思。它与重定向完全无关,仅涉及两个流之间的同步。如果将其设置为false,则可以独立缓冲两个流。

但是最后,两个流都写入标准输出文件描述符。对于stderr和(用于读取)stdin也是如此。

如果要重定向std::cout,则需要通过 rdbuf 重置其流缓冲区。

关于c++ - 命令行重定向标准输出也应该始终重定向cout吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59909111/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com