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 <
ตัวอย่าง
#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 <
ตัวอย่าง
#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