Heim >Backend-Entwicklung >C++ >Warum sollten Sie es vermeiden, cout und wcout im selben C-Programm zu mischen?

Warum sollten Sie es vermeiden, cout und wcout im selben C-Programm zu mischen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-14 14:11:02799Durchsuche

Why Should You Avoid Mixing cout and wcout in the Same C   Program?

Mischen von breiten und schmalen Ausgabeströmen im selben Programm

Im „C Cookbook“ wird erwähnt, dass cout und wcout gemischt werden Das gleiche Programm sollte nicht durchgeführt werden. Dieser Kommentar ergibt sich aus der Tatsache, dass C- und C-Standards vorschreiben, dass Streams eine Ausrichtung haben, und sobald diese Ausrichtung für einen Stream festgelegt ist, sollten Sie keine Vorgänge mischen, die mit der Ausrichtung nicht kompatibel sind.

Was Bedeutet das in der Praxis?

Wenn cout oder wcout zum ersten Mal aufgerufen wird, wird die Ausrichtung für stdout festgelegt. Im Fall von cout wird stdout zu einem byteorientierten Stream, und im Fall von wcout wird stdout zu einem Wide-orientierten Stream. Gemäß dem C-Standard [27.4.1] und dem C-Standard [7.19.2] sollten Sie, sobald die Ausrichtung eines Streams festgelegt ist, keine Funktion aufrufen, die nicht mit der Ausrichtung dieses Streams kompatibel ist.

Ausnahmen von der Regel

Es ist jedoch wichtig zu beachten, dass nicht alle Compiler diesen Standard strikt befolgen. Beispielsweise ist in Visual C 10.0 die Funktion fwide (die zum Festlegen der Ausrichtung eines Streams verwendet wird) nicht implementiert. Daher ist in Visual C das Mischen von cout und wcout zulässig.

In ähnlicher Weise war es in früheren Versionen von GCC aufgrund eines behobenen Fehlers möglich, cout und wcout im selben Programm aufzurufen, indem std aufgerufen wurde ::ios::sync_with_stdio(false); zu Beginn des Programms.

Es ist jedoch wichtig zu bedenken, dass es sich hierbei um Ausnahmen von der Regel handelt. Im Allgemeinen wird nicht empfohlen, breite und schmale Ausgabeströme im selben Programm zu mischen, da dies zu unerwartetem Verhalten oder undefinierten Ergebnissen führen kann.

Das obige ist der detaillierte Inhalt vonWarum sollten Sie es vermeiden, cout und wcout im selben C-Programm zu mischen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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