C++可帮助您格式化I / O操作,例如确定小数点后要显示的位数,指定基数等。
例子:
- 如果我们想添加+符号作为out输出的前缀,则可以使用格式来做到这一点:
stream.setf(ios::showpos) If input=100, output will be +100
- 如果我们要在输出中添加尾随零的输出以在需要时使用格式显示:
stream.setf(ios::showpoint) If input=100.0, output will be 100.000
注意:这里的流是指C++中定义的流,例如cin,cout,cerr,clog。
有两种方法可以这样做:
- 使用ios类或各种ios成员函数。
- 使用机械手(特殊功能)
- 使用ios成员进行格式化:
流具有格式标志,该标志控制格式的格式,这意味着使用此setf函数,我们可以设置标志,以允许我们以特定格式显示值。 ios类声明了一个称为fmtflags的位掩码枚举,其中定义了值(showbase,showpoint,oct,hex等)。这些值用于设置或清除格式标志。
很少有标准的ios类函数是:
- width(): width方法用于设置所需的字段宽度。输出将以给定的宽度显示
- precision(): precision方法用于将小数点的数量设置为浮点值
- fill(): fill方法用于设置字符以填充字段的空白
- setf(): setf方法用于设置各种标志以格式化输出
- unsetf(): unsetf方法用于删除标志设置
在职的:
#include
using namespace std; // The width() function defines width // of the next value to be displayed // in the output at the console. void IOS_width() { cout << "--------------------------\n"; cout << "Implementing ios::width\n\n"; char c = 'A'; // Adjusting width will be 5. cout.width(5); cout << c <<"\n"; int temp = 10; // Width of the next value to be // displayed in the output will // not be adjusted to 5 columns. cout< 输出:-------------------------- Implementing ios::width A 10 -------------------------- -------------------------- Implementing ios::fill *********a ****1 -------------------------- -------------------------- Implementing ios::setf +100 +200 -------------------------- -------------------------- Implementing ios::unsetf 200.000 --------------------------
- 使用操纵器进行格式化
更改流的格式参数的第二种方法是使用称为操纵器的特殊功能,这些特殊功能可以包含在I / O表达式中。
标准操纵器如下所示:- boolalpha: C++中的流操纵器的boolalpha操纵器用于打开bool alpha标志
- dec: C++中的流操纵器的dec操纵器用于打开dec标志
- ENDL:在C++流操纵的操纵器ENDL用于输出一个字符。
- 和: C++中的流操纵器的and操纵器用于刷新流
- Ends: C++中的流操纵器的ends操纵器用于输出null
- 固定: C++中的流操纵器的固定操纵器用于打开固定标志
- flush: C++中的流操纵器的flush操纵器用于刷新流
- hex: C++中的流操纵器的十六进制操纵器用于打开hex标志
- internal :C++中的流操纵器的内部操纵器用于打开内部标志
- left :C++中的流操纵器的左操纵器用于打开left标志
- noboolalpha :C++中的流操纵器的noboolalpha操纵器用于关闭bool alpha标志
- noshowbase :C++中的流操纵器的noshowbase操纵器用于关闭Shower标志
- noshowpoint :C++中的流操纵器的noshowpoint操纵器用于关闭显示点标志
- noshowpos :C++中的流操纵器的noshowpos操纵器用于关闭showpos标志
- noskipws :C++中的流操纵器的noskipws操纵器用于关闭skipws标志
- nounitbuf :C++中的流操纵器的nounitbuf操纵器用于关闭unit buff标志
- nouppercase :C++中的流操纵器的nouppercase操纵器用于关闭大写标志
- oct :C++中的流操纵器的oct操纵器用于打开oct标志
- resetiosflags(fmtflags f) :C++中的流操纵器的resetiosflags操纵器用于关闭f中指定的标志
- right :C++中的流操纵器的正确操纵器用于打开正确的标志
- 科学:C++中的流操纵器的科学操纵器用于打开科学标记
- setbase(int base) :C++中的流操纵器的setbase操纵器用于将基数设置为base
- setfill(int ch) :C++中的流操纵器的setfill操纵器用于将填充字符设置为ch
- setiosflags(fmtflags f): C++中的流操纵器的setiosflags操纵器用于打开f中指定的标志
- setprecision(int p): C++中的流操纵器的setprecision操纵器用于设置精度的位数
- setw(int w): C++中的流操纵器的setw操纵器用于将字段宽度设置为w
- showbase :C++中的流操纵器的showbase操纵器用于打开showbase标志
- showpoint :C++中的流操纵器的showpoint操纵器用于打开show point标志
- showpos :C++中的流操纵器的showpos操纵器用于打开showpos标志
- skipws :C++中的流操纵器的skipws操纵器用于打开skipws标志
- unitbuf :C++中的流操纵器的unitbuf操纵器用于打开unitbuf标志
- uppercase :C++中的流操纵器的大写操纵器用于打开大写标志
- ws :C++中的流操纵器的ws操纵器用于跳过前导空白
要访问带有参数的操纵器(例如setw()),必须在程序中包含“ iomanip”头文件。
例子:
#include
#include using namespace std; void Example() { // performs ssame as setf( ) cout << setiosflags(ios::showpos); cout << 123<<"\n"; // hexadecimal base (i.e., radix 16) cout << hex << 100 << endl; // Set the field width cout << setfill('*') << setw(10) << 2343.0; } int main() { Example(); return 0; } 输出:+123 64 *****+2343
机械手setiosflags()。
想要从精选的最佳视频中学习并解决问题,请查看有关从基础到高级C++的C++基础课程以及有关语言和STL的C++ STL课程。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。