混合寬字符流和窄字符流:了解標準的要求
在C 中,混合cout(窄字符輸出流)和wcout(寬字元輸出流)同一程式中的字元輸出流)引發了有關流方向的問題。
C 標準[27.4.1] 規定「對相應的寬字符流和窄字符流的操作」應遵循與 C 標準中對 FILE 的混合操作相同的語義。參考C標準中的[7.19.2],很明顯位元組輸入/輸出函數不應該應用於面向寬的流,且寬字元輸入/輸出函數不應該應用於面向位元組的流。
這表示應避免在同一程式中混合 wcout 和 cout。然而,也有例外。例如,在 Visual C 10.0 中,據報道負責維護流方向的 fwide 函數尚未實作。這意味著混合 cout 和 wcout 可以在該環境中正常運作。
類似地,libstdc (libstdc /11705) 中的一個「bug」允許透過呼叫 std 來混合面向位元組和麵向寬的 I/O ::ios::sync_with_stdio(假)。然而,需要注意的是,這種行為是無法保證的,並且可能會因編譯器和作業系統的不同而有所不同。
因此,雖然標準建議不要混合 cout 和 wcout,但必須意識到潛在的潛在風險異常並確保在使用不同編譯器或環境時正確處理流方向。
以上是你能在不違反標準的情況下在 C 中混合使用'cout”和'wcout”嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!