setw() 与 cout.width()

setw(20)cout.width(20)之间的区别


一般情况下我们都要把输出结果按照一定的格式输出出来,那么就有两种输出格式的控制方法


1.setw(20) - iomanip

setw的特点是一定要在左边接上一个内容一起输出才能发挥作用,比方说我们想在文章输出开始之前输入20个空格,如果直接是


cout << setw(20) <<内容


那就不会发挥作用,运行的时候就不会看到这20个空格,解决办法是


cout << “ “ << setw(19) <<内容

这样的话就可以看见20个空格了


2.setwidth20-iostream

cout.width的使用之前需要加上cout.setf(ios::left)   最好加上  否则接下来的第一段就会出现一些问题

然后我们可以开始声明+ 使用cout.width()  


 使用地点


然而也不是声明一下cout.width()就可以全文使用,至少目前来看是在main里声明的内容  是只能main里使用

甚至是main里调用的函数也不能适用在main里面声明的cout.width()


此外  cout.width()拥有一个特点,就是他只对  "此scope内“  + “声明地点之后的内容”  起作用  

也就是说 如果是对for里面的内容声明width  那要在for一开头的地方写下cout.width()


因此想要让cout.width()发挥作用,首先需要在开头声明cout.setf(ios::left)   然后在每个“合适”地方各自声明cout.width()


使用方式


发挥作用的方式要看你输入的方式了,例如


for(int i=1 , i<20 ,i++)

cout<< “*”

输出结果会是

* *

* **

* ***

* ****

出现这样的情况是因为setwidth会将第一个输入进去的内容靠左对齐,剩下来的内容会被填充在20个字符最靠右边的地方,中间的内容靠空格不齐


相比较于setw而言这样做的好处是你只需要设置一次,哪怕是在非主函数中设置的,全文都可以使用

而且如果你知道你输入的内容会是下面的格式:


MONDAY 5PM

TUESDAY 5PM

.

.

.

.


这样的只有两个内容在里面的,那就会很好看很省事的自动对齐了

你可能感兴趣的:(setw() 与 cout.width())