Heim > Backend-Entwicklung > C++ > Können Sie „cout' und „wcout' in C mischen, ohne den Standard zu verletzen?

Können Sie „cout' und „wcout' in C mischen, ohne den Standard zu verletzen?

Susan Sarandon
Freigeben: 2024-11-11 22:55:03
Original
232 Leute haben es durchsucht

Can You Mix `cout` and `wcout` in C   Without Breaking the Standard?

Mischen von breiten und schmalen Zeichenströmen: Die Anforderungen des Standards verstehen

In C ist das Mischen von cout (schmaler Zeichenausgabestrom) und wcout (breit Zeichenausgabestream) im selben Programm wirft Fragen zur Streamausrichtung auf.

Der C-Standard [27.4.1] schreibt vor, dass „Operationen an entsprechenden Wide- und Narrow-Character-Streams“ der gleichen Semantik folgen sollten wie Mischoperationen an FILEs im C-Standard. Unter Bezugnahme auf [7.19.2] im C-Standard ist es offensichtlich, dass Byte-Eingabe-/Ausgabefunktionen nicht auf Wide-orientierte Streams angewendet werden sollten und dass Wide-Zeichen-Eingabe-/Ausgabefunktionen nicht auf Byte-orientierte Streams angewendet werden sollten.

Dies legt nahe, dass das Mischen von wcout und cout innerhalb desselben Programms vermieden werden sollte. Es gibt jedoch Ausnahmen. Beispielsweise ist in Visual C 10.0 die fwide-Funktion, die für die Aufrechterhaltung der Stream-Ausrichtung verantwortlich ist, Berichten zufolge nicht implementiert. Dies bedeutet, dass die Vermischung von cout und wcout in dieser Umgebung möglicherweise ordnungsgemäß funktioniert.

Ähnlich ermöglicht ein „Fehler“ in libstdc (libstdc /11705) die Vermischung von byteorientierter und breitorientierter E/A durch Aufruf von std ::ios::sync_with_stdio(false). Es ist jedoch wichtig zu beachten, dass dieses Verhalten nicht garantiert ist und je nach Compiler und Betriebssystem variieren kann.

Obwohl der Standard daher davon abrät, cout und wcout zu mischen, ist es wichtig, sich des Potenzials bewusst zu sein Ausnahmen und um die ordnungsgemäße Handhabung der Stream-Ausrichtung bei der Arbeit mit verschiedenen Compilern oder Umgebungen sicherzustellen.

Das obige ist der detaillierte Inhalt vonKönnen Sie „cout' und „wcout' in C mischen, ohne den Standard zu verletzen?. 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