博客摘录:记录C++中的setw()函数与C++输入输出格式left和right用法

setw()

今天在学习C++中碰到一个setw()函数,不知道是什么意思,上网查阅资料得知:

setw(int n)函数是C++中在输出操作中使用的字段宽度设置,此函数的作用是:设置输出的域宽,n表示字段宽度。它只对紧接着的输出有效,紧接着的输出结束后又变回默认的域宽。当后面紧跟着的输出字段长度小于n的时候,在该字段前面用空格补齐;当输出字段长度大于n时,全部整体输出。

setw(int n)函数包含在头文件为#include <iomanip>中,其中io代表输入输出,manip是manipulator(操纵器)的缩写iomanip的作用:主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头文件,就像C里面的格式化输出一样。代码如下:

#include <iostream>
using namespace std;
 
#include <iomanip>
using std::setw;
 
int main()
{
    cout << 123456789 << endl;
    cout << setw(4) << 123 << setw(7) << 456789 << endl;
    return 0;
}

如果我们上面的代码稍作修改,

cout << setw(4) << 123 << setw(7) << 456789 << endl;
改为:

cout << setw(4) << 123 << setw(3) << 456789 << endl;
修改后的代码如下:

#include <iostream>
using namespace std;
 
#include <iomanip>
using std::setw;
 
int main()
{
    cout << 123456789 << endl;
    cout << setw(4) << 123 << setw(3) << 456789 << endl;
    return 0;
}


 

我们发现,123我们设置的长度为4,123本身长度为3,所以在123之前补一个空格来填满长度4.之后的456789本身长度是6,设置的长度为3,所以只要把456789本身全部输出就OK了。

感谢原文链接:https://blog.csdn.net/weixin_40379143/article/details/107999889

left and right

left和right控制后面符号的位置,left使其靠左,right使其后右。

#include<iostream>
#include<iomanip>
using namespace std;
 
int main()
{
	cout << setfill('*') << left << 'a' << setw(3) << 'b' << endl;
	cout << setfill('*')<<right << 'a' << setw(3) << 'b' << endl;
	cout << setfill('*') << 'a' << left << setw(3) << 'b' << endl;
	cout << setfill('*') << 'a' << right << setw(3) << 'b' << endl;
	system("pause");
	return 0;
}

解释:使用setw()函数要用#include<iomanip>    setw()函数会设置其后面字符的位置空间大小,如setw(3) 会设置其宽度为3个字节

第一行:设置填充符号为'*' 设置为左对齐,因为字符‘a’就占一个字节所以就直接输出了,然后字符‘b’,设置字符宽度为3个字节,且前面设置为左对齐,所以会将设置3个字节的位置输出b**

第二行:设置填充符号为'*' 设置为右对齐,因为字符‘a’就占一个字节所以就直接输出了,然后字符‘b’,设置字符宽度为3个字节,且前面设置为右对齐,所以会将设置3个字节的位置输出**b

第三行:设置填充符号为'*' 因为字符‘a’就占一个字节所以就直接输出了,设置为左对齐,然后设置字符'b'宽度为3个字节,且前面设置为左对齐,所以会将设置3个字节的位置输出b**

第四行:设置填充符号为'*' 因为字符‘a’就占一个字节所以就直接输出了,设置为右对齐,然后设置字符'b'宽度为3个字节,且前面设置为右对齐,所以会将设置3个字节的位置输出**b

原文链接:https://blog.csdn.net/weixin_71272801/article/details/132657214

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值