Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

C ++ Manipulators คืออะไร (endl, setw, setprecision, setf)


Stream Manipulators เป็นฟังก์ชันที่ออกแบบมาโดยเฉพาะเพื่อใช้ร่วมกับตัวดำเนินการแทรก (<<) และการแยก (>>) บนวัตถุสตรีม เช่น −

std::cout << std::setw(10);

ยังคงเป็นฟังก์ชันปกติและสามารถเรียกได้ว่าเป็นฟังก์ชันอื่นโดยใช้วัตถุสตรีมเป็นอาร์กิวเมนต์ ตัวอย่างเช่น -

boolalpha (cout);

Manipulators ใช้สำหรับเปลี่ยนพารามิเตอร์การจัดรูปแบบในสตรีม และเพื่อแทรกหรือแยกอักขระพิเศษบางตัว

ต่อไปนี้เป็นตัวจัดการ C++ ที่ใช้กันอย่างแพร่หลาย -

จบ

เครื่องมือจัดการนี้มีฟังก์ชันเหมือนกับ '\n' (อักขระขึ้นบรรทัดใหม่) แต่สิ่งนี้จะล้างกระแสเอาต์พุตด้วย

ตัวอย่าง

#include<iostream>
int main() {
   std::cout << "Hello" << std::endl << "World!";
}

ผลลัพธ์

Hello
World!

showpoint/noshowpoint

ตัวจัดการนี้จะควบคุมว่าจุดทศนิยมจะรวมอยู่ในการแสดงจุดทศนิยมเสมอหรือไม่

ตัวอย่าง

#include <iostream>
int main() {
   std::cout << "1.0 with showpoint: " << std::showpoint << 1.0 << '\n'
             << "1.0 with noshowpoint: " << std::noshowpoint << 1.0 << '\n';
}

ผลลัพธ์

1.0 with showpoint: 1.00000
1.0 with noshowpoint: 1

การตั้งค่าความแม่นยำ

เครื่องมือจัดการนี้เปลี่ยนความแม่นยำของทศนิยม เมื่อใช้ในนิพจน์ out <> setprecision(n) ให้ตั้งค่าพารามิเตอร์ความแม่นยำของ stream out หรือเป็น n ทุกประการ

ตัวอย่าง

#include <iostream>
#include <iomanip>
int main() {
   const long double pi = 3.141592653589793239;
   std::cout << "default precision (6): " << pi << '\n'
             << "std::setprecision(10): " << std::setprecision(10) << pi << '\n';
}

ผลลัพธ์

default precision (6): 3.14159
std::setprecision(10): 3.141592654

setw

หุ่นยนต์นี้จะเปลี่ยนความกว้างของฟิลด์อินพุต/เอาต์พุตถัดไป เมื่อใช้ในนิพจน์ out <> setw(n) ให้ตั้งค่าพารามิเตอร์ width ของ stream out หรือเป็น n ทุกประการ

ตัวอย่าง

#include <iostream>
#include <iomanip>
int main() {
   std::cout << "no setw:" << 42 << '\n'
             << "setw(6):" << std::setw(6) << 42 << '\n'
             << "setw(6), several elements: " << 89 << std::setw(6) << 12 << 34 << '\n';
}

ผลลัพธ์

no setw:42
setw(6):    42
setw(6), several elements: 89    1234