Mencampurkan Aliran Aksara Luas dan Sempit: Memahami Keperluan Standard
Dalam C , mencampurkan cout (strim keluaran aksara sempit) dan wcout (lebar aliran keluaran aksara) dalam program yang sama menimbulkan persoalan tentang orientasi aliran.
The C Standard [27.4.1] menetapkan bahawa "operasi pada aliran aksara lebar dan sempit yang sepadan" harus mengikut semantik yang sama seperti operasi pencampuran pada FILE dalam Standard C. Merujuk kepada [7.19.2] dalam Standard C, adalah jelas bahawa fungsi input/output bait tidak seharusnya digunakan pada strim berorientasikan lebar dan fungsi input/output aksara lebar tidak boleh digunakan pada strim berorientasikan bait.
Ini menunjukkan bahawa pencampuran wcout dan cout dalam program yang sama harus dielakkan. Walau bagaimanapun, pengecualian wujud. Sebagai contoh, dalam Visual C 10.0, fungsi fwide yang bertanggungjawab untuk mengekalkan orientasi aliran dilaporkan tidak dilaksanakan. Ini bermakna bahawa gabungan cout dan wcout mungkin berfungsi dengan baik dalam persekitaran itu.
Begitu juga, "pepijat" dalam libstdc (libstdc /11705) membenarkan pencampuran I/O berorientasikan bait dan berorientasikan luas dengan memanggil std ::ios::sync_with_stdio(false). Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa tingkah laku ini tidak dijamin dan mungkin berbeza-beza bergantung pada pengkompil dan sistem pengendalian.
Oleh itu, walaupun piawaian mengesyorkan agar tidak mencampurkan cout dan wcout, adalah penting untuk mengetahui potensi pengecualian dan untuk memastikan pengendalian orientasi aliran yang betul apabila bekerja dengan penyusun atau persekitaran yang berbeza.
Atas ialah kandungan terperinci Bolehkah Anda Campurkan `cout` dan `wcout` dalam C Tanpa Melanggar Piawaian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!