Ist dies einfach bedeutet, was auch immer wir mit Objekt wie Cout synchron mit stdout (und umgekehrt?) Tun. Was bedeutet das genau? Wird stdio auch mit stdout synchronisiert?Was ist genaue Bedeutung von Iostream ist Sync mit ios_base :: sync_with_stdio
Antwort
Der Standard Ostream verwendet von std :: cout und stdio (wie printf) ist stdout, aber es ist nicht unbedingt so.
Der Ausgang könnte immer zum anderen Ziel umgeleitet werden. Referenzieren: http://www.tldp.org/LDP/abs/html/io-redirection.html
Per cppreference:
Sets whether the standard C++ streams are synchronized to
the standard C streams after each input/output operation.
Wenn die Synchronisation ausgeschaltet ist, werden die C++ - Streams in einigen Fällen schneller sein.
Standardmäßig werden alle C++ - Standardstreams mit ihren jeweiligen C-Streams synchronisiert.
Beispiel:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
cout.sync_with_stdio(false);
cout << "Hello\n";
printf("World\n");
cout << "...\n";
}
Ausgang:
Hello
...
World
es true
Ändern gibt Standardresultset um. Ausgabe:
Hello
World
...
@POW Also, kann ich Schlussfolgerung ziehen, wenn nicht synchron, kann cout/printf keine Bestellung garantieren oder kann nicht garantieren, dass Dinge gedruckt werden? –
@Pranitkothari nicht unbedingt, ein 'endl' wird Szenario auch bei ausgeschaltetem Sync ändern – P0W
@POW sicher, aber was ist mit ohne endl ich frage. Ich kenne endl flush buffer. Aber was ohne. –
Bedeutet das, dass ich auf Drucker wie Gerät ausgeben kann, das cout verwendet. Wenn möglich, kannst du einen Weg vorschlagen. –
@ Pranitkothari Ja. Die Sache besteht darin, den Gerätedateideskriptor und den Umleitungscout (mit einem Dateideskriptor 1) dorthin zu bringen. Sie können es in der Befehlszeile tun. Der obige Link könnte Ihnen einen Hinweis geben. – lulyon