Мне не ясно, должно ли перенаправление stdout в файл из командной строки также всегда перенаправлять cout (и аналогично для stderr и cerr).
В качестве теста я написал код ниже. Насколько я понимаю, с аргументом sync_with_stdio, установленным в true, который является значением по умолчанию, cout будет передавать свои выходные данные в stdout, и в этом случае перенаправление stdout будет также перенаправлять cout, и это происходит при использовании VS на моей машине с Win10.
Однако, когда я изменил аргумент на 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";
}