Mencampurkan cout dan wcout
Seperti yang anda baca dalam "C Cookbook", kod berikut mungkin mengakibatkan ralat:
cout << s << std::endl; // You shouldn't be able to wcout << ws << std::endl; // run these at the same time
Ini disebabkan oleh konsep "orientasi aliran". Selepas strim dicipta, tetapi sebelum sebarang operasi dilakukan padanya, ia adalah tanpa orientasi. Walau bagaimanapun, sebaik sahaja fungsi input/output aksara lebar (seperti wcout) digunakan padanya, ia menjadi aliran berorientasikan luas, dan sebaik sahaja fungsi input/output bait (seperti cout) digunakan padanya, ia menjadi bait- strim berorientasikan.
Piawaian C menentukan bahawa "Fungsi input/output bait tidak boleh digunakan pada strim berorientasikan lebar, dan fungsi input/output aksara lebar tidak boleh digunakan pada strim berorientasikan bait." (C Standard [7.19.2]).
Dalam kes kod yang anda berikan, cout menetapkan stdout sebagai strim berorientasikan bait. Selepas itu, wcout tidak boleh digunakan pada stdout mengikut piawaian. Walau bagaimanapun, dalam amalan, sesetengah penyusun dan persekitaran mungkin membenarkan mencampurkan fungsi keluaran berorientasikan lebar dan berorientasikan bait pada aliran yang sama. Tingkah laku ini mungkin bergantung pada versi pengkompil dan platform.
Atas ialah kandungan terperinci Bolehkah Anda Campurkan `cout` dan `wcout` tanpa Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!