Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Các bộ điều khiển luồng (Manipulators) trong C++: endl, setw, setprecision, setf

Stream Manipulators (bộ điều khiển luồng) là các hàm được thiết kế đặc biệt để dùng kết hợp với toán tử chèn (<<) và trích xuất (>>) trên đối tượng luồng (stream objects), ví dụ:

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

Chúng vẫn là các hàm thông thường và cũng có thể gọi như hàm khác với đối tượng luồng làm đối số, ví dụ:

boolalpha(cout);

Manipulators dùng để thay đổi tham số định dạng trên luồng và chèn/trích xuất các ký tự đặc biệt.

Dưới đây là một số manipulators C++ phổ biến nhất:

endl

Manipulator này có chức năng giống '\n' (ký tự xuống dòng). Nhưng nó cũng xóa bộ đệm (flush) luồng xuất.

Ví dụ

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

Kết quả

Hello
World!

showpoint / noshowpoint

Manipulator này kiểm soát việc có luôn hiển thị dấu thập phân trong biểu diễn số thực hay không.

Ví dụ

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

Kết quả

1.0 with showpoint: 1.00000
1.0 with noshowpoint: 1

setprecision

Manipulator này thay đổi độ chính xác số thực. Khi dùng trong biểu thức out << setprecision(n) hoặc in >> setprecision(n), thiết lập tham số độ chính xác của luồng out hoặc in chính xác bằng n.

Ví dụ

#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';
}

Kết quả

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

setw

Manipulator này thay đổi độ rộng của trường nhập/xuất tiếp theo. Khi dùng trong biểu thức out << setw(n) hoặc in >> setw(n), thiết lập tham số độ rộng của luồng out hoặc in chính xác bằng n.

Ví dụ

#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';
}

Kết quả

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