Heim > Backend-Entwicklung > C++ > Hauptteil

Können Sie „cout' und „wcout' ohne Fehler mischen?

Linda Hamilton
Freigeben: 2024-11-14 17:13:01
Original
470 Leute haben es durchsucht

Can You Mix `cout` and `wcout` without Errors?

Cout und wcout mischen

Wie Sie im „C Cookbook“ lesen, kann der folgende Code zu einem Fehler führen:

cout << s << std::endl; // You shouldn't be able to
wcout << ws << std::endl; // run these at the same time
Nach dem Login kopieren

Dies ist auf das Konzept der „Stromorientierung“ zurückzuführen. Nachdem ein Stream erstellt wurde, aber bevor irgendwelche Operationen daran ausgeführt werden, ist er ohne Ausrichtung. Sobald jedoch eine Eingabe-/Ausgabefunktion für Breitzeichen (wie wcout) darauf angewendet wird, wird er zu einem Stream mit breiter Ausrichtung, und sobald eine Eingabe-/Ausgabefunktion für Bytes (wie cout) darauf angewendet wird, wird er zu einem Byte-Stream. orientierter Stream.

Der C-Standard legt fest, dass „Byte-Eingabe-/Ausgabefunktionen nicht auf einen breitorientierten Stream angewendet werden dürfen und Eingabe-/Ausgabefunktionen für breite Zeichen nicht auf einen byteorientierten Stream angewendet werden dürfen.“ (C-Standard [7.19.2]).

Im Fall des von Ihnen bereitgestellten Codes legt cout stdout als byteorientierten Stream fest. Daher sollte wcout laut Standard nicht auf stdout verwendet werden. In der Praxis erlauben einige Compiler und Umgebungen jedoch möglicherweise das Mischen von Breitzeichen- und byteorientierten Ausgabefunktionen im selben Stream. Dieses Verhalten kann von der Compilerversion und Plattform abhängen.

Das obige ist der detaillierte Inhalt vonKönnen Sie „cout' und „wcout' ohne Fehler mischen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage