VC++中,setw()是什么函数?
setw(n) 的作用为设置字段宽度为n位。
上述接口与ios_base的格式控制成员是对应的,可以二者配合进行输出格式的精准控制。其中的精度控制默认是6位有效数字,科学计数法中的指数部分e为默认小写。setw设置的宽度如果小于字段宽度会失效 。
如果在一次输出过程中需要混杂多种格式,使用ios_base的成员函数来处理就显得很不方便。STL另提供了iomanip库可以满足这种使用方式。
扩展资料
在ios_base基类的基础上将每一种格式的设置和删除都进行了函数级的同名封装,提供了全局的调用接口函数,支持在运算符“<<”和“>>”上的多次使用,配合ios_base实例的控制。是I/O流控制头文件,就像C里面的格式化输出一样。
输入和输出并不是C++语言中的正式组成成分。C和C++本身都没有为输入和输出提供专门的语句结构。输入输出不是由C++本身定义的,而是在编译系统提供的I/O库中定义的。
参考资料来源:百度百科-iomanip
setw(x)用于流操作符<<输出之中,是对直接跟在<<后的输出数据声明对齐的作用。
该函数不仅用于VC++,这是标准C++运行库函数,多数C++编译器都支持。
setw输出对齐,就是用于控制台下,每个输出的对齐显示,对齐的方法,就是不足指定x个长度时,用默认空格(或指定字符)补齐长度后输出。
示例:
#include <iostream>
#include <iomanip>
using namespace std;
void main(){
//123不足10个长度,后面补7个空格
cout << setw(10)<< 123 << endl;
//声明右对齐,前面补7个空格
cout << setw(10) << setiosflags(ios::right) << 123 << endl;
//用*星号而不是空格,来补足10个位置
cout << setw(10) << setfill('*') << 123 << endl;
}
在输出的时候
fout<<setw(x)<<n(x>0)
相对于右对齐x位
比如
cout<<"aa"<<setw(3)<<23;
就是aa 23
cout<<setw(x)<<n(x<0)
相对于左对齐-x位
cout<<"aa"<<setw(-3)<<23<<"aa";
就是aa23 aa
setw
Specifies the width of the display field.
T6 setw(
streamsize _Wide
);
Parameters
_Wide
The width of the display field.
Return Value
The manipulator returns an object that, when extracted from or inserted into the stream str, calls str.width(_Wide), then returns str.
// iomanip_setw.cpp
// compile with: /EHsc
// Defines the entry point for the console application.
//
// Sample use of the following manipulators:
// resetiosflags
// setiosflags
// setbase
// setfill
// setprecision
// setw
#include <iostream>
#include <iomanip>
using namespace std;
const double d1 = 1.23456789;
const double d2 = 12.3456789;
const double d3 = 123.456789;
const double d4 = 1234.56789;
const double d5 = 12345.6789;
const long l1 = 16;
const long l2 = 256;
const long l3 = 1024;
const long l4 = 4096;
const long l5 = 65536;
int base = 10;
void DisplayDefault( )
{
cout << endl <<
参考资料: MSDN
如:cout<<setw(6)<<"asdf"<<"asdf"<<set(6)<<"asdfghj"endl;
输出: asdfasdfasdfghj(注意前面有两个空格)
说明他只对紧随其后的域起作用,如第二个;而且数据不能充满指定宽度时,系统会自动以空格填充,如第一个;setw不截断数值,如数值超过指定宽度时,会显示全部数值,如第三个。用的时候要包含iomanip头文件。