>` Sifarkan Pembolehubah Saya pada Kegagalan Pengekstrakan dalam C 11? " />
Mengapa Stringstream >> Menukar Nilai Sasaran pada Kegagalan?
Dalam C moden (C 11 dan seterusnya), tingkah laku >> ; operator untuk aliran rentetan apabila pengekstrakan gagal telah berubah daripada versi terdahulu Seperti standard C 11, apabila gagal, pembolehubah sasaran ditetapkan kepada lalai nilai (biasanya sifar untuk integer), dan bendera failbit ditetapkan.
Sebelum C 11, tingkah laku adalah berbeza Menurut petikan Stroustrup daripada "TC PL, Edisi Ke-3," apabila pembolehubah sasaran gagal harus kekal tidak berubah Walau bagaimanapun, contoh kod yang disediakan menunjukkan percanggahan, di mana pembolehubah sasaran v disifarkan selepas pengekstrakan yang gagal percubaan.
Tingkah laku bercanggah yang jelas ini boleh dijelaskan oleh fakta bahawa coretan sedang disusun di bawah mod C 11, yang mengubah tingkah laku pengendali >> 🎜>Jika pengekstrakan gagal disebabkan oleh jenis data yang tidak sah (cth., cuba membaca perkataan menjadi integer), pembolehubah sasaran kekal tidak diubah suai dan bendera failbit ditetapkan.
Atas ialah kandungan terperinci Mengapakah `stringstream >>` Sifar Pembolehubah Saya pada Kegagalan Pengekstrakan dalam C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!