Rumah > pembangunan bahagian belakang > C++ > Mengapa Sesetengah Manipulator C iomanip Melekit Manakala Yang Lain, Seperti `std::setw()`, Bukan?

Mengapa Sesetengah Manipulator C iomanip Melekit Manakala Yang Lain, Seperti `std::setw()`, Bukan?

Mary-Kate Olsen
Lepaskan: 2024-12-22 18:02:15
asal
885 orang telah melayarinya

Why Are Some C   iomanip Manipulators Sticky While Others, Like `std::setw()`, Are Not?

Manipulator Iomanip Melekit

Dalam C , manipulator iomanip ialah pengubah suai strim, digunakan untuk mengubah gelagat atau format aliran input dan output. Walau bagaimanapun, tidak semua manipulator berkelakuan dengan cara yang sama; sesetengahnya bersifat sementara dan hanya menjejaskan sisipan seterusnya, manakala yang lain "melekit", kekal berkuat kuasa sehingga diubah secara eksplisit.

Mengapa std::setw() Tidak Melekit?

Tidak seperti kebanyakan manipulator lain, std::setw() tidak mengubah keadaan strim secara kekal. Ini kerana ia dianggap sebagai manipulator pemformatan, di mana setiap sisipan memerlukan spesifikasi lebar yang jelas untuk penjajaran yang betul. Secara lalai, ia ditetapkan semula kepada sifar selepas setiap sisipan untuk mengelakkan kekaburan dan mengekalkan kawalan ke atas pemformatan.

Manipulator Melekit

Manipulator berikut adalah melekit, bermakna ia kekal berkuat kuasa sehingga diubah oleh manipulator lain atau secara eksplisit set semula:

  • std::setiosflags
  • std::resetiosflags
  • std::setbase
  • std::setfill
  • std::setprecision
  • Semua manipulator pengubahsuai bendera (cth., std::boolalpha, std::showbase)
  • Semua manipulator pemformatan (cth., std::fixed, std::internal)
  • Semua pengubah keadaan strim ( cth., std::ws, std::endl)

std::ios_base::width() vs. std::setw()

std::ios_base::width () ialah fungsi ahli std::ios_base, kelas asas semua jenis aliran. Ia mengembalikan lebar medan semasa. Walau bagaimanapun, ia tidak mengawal lebar medan secara langsung; std::setw() mesti digunakan untuk menetapkan lebar medan.

Rujukan Dalam Talian

Rujuk kepada dokumentasi Perpustakaan Standard C untuk senarai komprehensif manipulator iomanip dan tingkah laku mereka. Ia memberikan penerangan terperinci dan contoh kefungsian mereka. Sebagai alternatif, sumber dalam talian seperti tapak web cppreference menawarkan maklumat menyeluruh tentang manipulator, termasuk sifat melekitnya.

Atas ialah kandungan terperinci Mengapa Sesetengah Manipulator C iomanip Melekit Manakala Yang Lain, Seperti `std::setw()`, Bukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan