什么是C ++操纵器(endl,setw,setprecision,setf)?

流操纵器是专门设计用于与流对象上的插入(<<)和提取(>>)运算符结合使用的功能,例如-

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

它们仍然是常规函数,也可以使用流对象作为参数来调用为任何其他函数,例如-

boolalpha (cout);

操纵器用于更改流上的格式设置参数以及插入或提取某些特殊字符。

以下是一些使用最广泛的C ++操纵器-

Endl

该操纵器具有与'\ n'(换行符)相同的功能。但这也会刷新输出流。

示例

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

输出结果

Hello
World!

显示点/不显示点

该操纵器控制小数点是否始终包含在浮点表示中。 

示例

  

#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)或in >> setprecision(n)中使用时,将流的precision参数精确设置为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

塞特

该操纵器更改下一个输入/输出字段的宽度。在表达式out << setw(n)或in >> setw(n)中使用时,将流out或in的宽度参数精确设置为n。 

示例

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

输出结果

没有setw:42
setw(6):    42
setw(6), several elements: 89    1234