Rumah >pembangunan bahagian belakang >C++ >Manipulator Aliran C yang manakah Melekit, dan Mengapa Tidak `setw()`?

Manipulator Aliran C yang manakah Melekit, dan Mengapa Tidak `setw()`?

Linda Hamilton
Linda Hamiltonasal
2024-12-13 04:37:091019semak imbas

Which C   Stream Manipulators are Sticky, and Why Isn't `setw()`?

Manipulator Melekit dalam C

Dalam pengaturcaraan C, manipulator digunakan untuk mengubah suai pemformatan output strim. Manipulator tertentu berkelakuan dengan cara "melekit", bermakna kesannya berterusan sehingga berubah secara eksplisit.

Mengapa setw() tidak Melekit?

std::setw( ) ialah contoh manipulator tidak melekit. Ini bermakna ia hanya menjejaskan operasi sisipan seterusnya. Selepas setw() digunakan, tetapan lebar ditetapkan semula kepada nilai lalainya.

Adakah Manipulator lain Melekit?

Semua manipulator kecuali setw() adalah melekit. ini termasuk:

  • setiosflags
  • resetiosflags
  • setbase
  • setfill
  • setprecision
  • setiosflags
  • resetiosflags
  • setbase
  • setfil l
  • setprecision
  • [no]boolalpha
  • [no]showbase
  • [no]showpoint
  • [no]showpos
  • [no]skipws
  • [no]unitbuf
  • [no]huruf besar
  • dec/ hex/ oct
  • tetap/ saintifik
  • dalaman/ kiri/ kanan
  • ws/ endl/ ends/ flush

Perbezaan antara std::ios_base::width() dan std::setw()

std::setw() mengembalikan objek yang mewakili nilai lebar. Objek ini boleh digunakan untuk menetapkan lebar item seterusnya yang dimasukkan ke dalam strim.

std::ios_base::width() menetapkan secara langsung lebar strim. Sebarang sisipan berikutnya ke dalam strim akan diformatkan dengan lebar baharu.

Rujukan Dalam Talian

Malangnya, tiada dokumentasi yang jelas yang menyatakan secara eksplisit kelakuan melekit manipulator. Walau bagaimanapun, tingkah laku itu boleh disimpulkan daripada dokumentasi Perpustakaan Standard C.

Contoh Manipulator Melekit

Kod berikut menunjukkan tingkah laku melekit manipulator:

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
  // Set the precision to 2 decimal places
  cout << setprecision(2);

  // Insert a number
  cout << 3.14 << endl;  // Output: 3.14

  // The precision is still set to 2 decimal places
  cout << 1.2345 << endl; // Output: 1.23
}

Kesimpulan

Manipulator melekit adalah ciri berguna dalam C yang boleh membantu mengawal pemformatan output. Walau bagaimanapun, adalah penting untuk mengetahui tingkah laku mereka untuk mengelakkan hasil yang tidak dijangka.

Atas ialah kandungan terperinci Manipulator Aliran C yang manakah Melekit, dan Mengapa Tidak `setw()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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