C ++ Standard garantiert, dass alle im Puffer enthaltenen Daten vor dem nächsten Aufruf von std :: cin gedruckt werden. So:
%Vor%Aus diesem Grund:
ISO / IEC 14882: 2011
27.4.2 Objekte mit schmalem Stream [eng.stream.objects]
2 Nachdem das Objekt cin initialisiert wurde, gibt cin.tie () & amp; cout zurück. Es ist Der Status ist ansonsten der gleiche wie für basic_ios :: init (27.5.5.2).
27.4.3 Wide Stream Objekte [wide.stream.objects]
2 Nachdem das Objekt wcin initialisiert wurde, gibt wcin.tie () & amp; wcout zurück. Ihr Zustand ist ansonsten derselbe wie für erforderlich basic_ios :: init (27.5.5.2).
Aber in C gibt es wirklich keine Garantien, dass alles, das im stdout Puffer enthalten ist, gedruckt wird, bevor irgendein Versuch, zu stdin?
%Vor%Ich weiß, dass stdout linien gepuffert ist, aber ich möchte in solchen Situationen keinen '\ n' Charakter setzen. Ist die Verwendung von fflush / fclose / etc der einzig richtige Weg, die Ausgabe direkt vor der Eingabeanforderung in C zu erhalten?
Nein, solche Garantien gibt es nicht. Ja, Sie können fflush () verwenden, um sicherzustellen, dass stdout gelöscht wird.
Diese Frage steht in engem Zusammenhang: Ist das Lesen von stdin flush stdout?