混合cout 和wcout
正如您在「C Cookbook」中閱讀的那樣,以下程式碼可能會導致錯誤:
cout << s << std::endl; // You shouldn't be able to wcout << ws << std::endl; // run these at the same time
這是由於「流導向」的概念。創建流之後,但在對其執行任何操作之前,它是沒有方向的。然而,一旦對它應用了寬字元輸入/輸出函數(如wcout),它就變成了面向寬字元的流,而一旦對其應用了位元組輸入/輸出函數(如cout),它就變成了位元組流。
C 標準規定「位元組輸入/輸出函數不應應用於面向寬的流,寬字元輸入/輸出函數不應應用於面向位元組的流。」(C 標準[7.19.2] )。
在您提供的程式碼中,cout 將 stdout 設定為面向位元組的串流。隨後,根據標準,wcout 不應在 stdout 上使用。然而,實際上,某些編譯器和環境可能允許在同一流上混合寬字元和麵向位元組的輸出函數。此行為可能取決於編譯器版本和平台。
以上是你可以毫無錯誤地混合'cout”和'wcout”嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!