格式化输入输出(13)

cin和cout

包含头文件iostream,使用命名空间std(避免每个都得加作用域),iomanip是C++里用来格式化控制输入输出的,多个不同类型的变量的输入输出可以按照以下的方法来完成。

 程序运行中,需要保证输入数据的正确性,有可能出现不报错但是输入出现问题的情况:

不能用逗号进行分割(C语言scanf也是在逗号分割的时候输入才用逗号),还是可以用空格,TAB或者换行来实现多个变量输入的分割。endl是std命名空间中定义的,功能与'\n'相同,都是换行。当然,在C++里也可以用转义字符'\n'来代替endl。

cin对异常输入会设置失败位,但是不会使程序报错或者中断,可以通过cin.fail()来完成检测输入是否正常:

或者直接把cin写入循环控制条件(异常输入会返回NULL也就是0 逻辑假)

 如果即要保证输入正常,又需要遇到a赋值为0就退出程序,可以这样:

cout可以输出:变量、常量(字符串常量)、表达式、函数调用等等,也可以像C语言printf函数一样进行各种输出格式的设定。

格式化输出

包含iomanip头文件,可以在<<中设置格式,也可以通过cout调用相应的函数来实现同样的功能。

1、设置输出进制(十六进制、八进制等)用cout<<setbase(16)或者dec、hex、oct等标识符 

 注意点:setbase或者使用hex等标识符后,cout将切换成对应的输出格式,也就是说后面的输出都会按这种输出格式,直到下一次设置新的输出格式;没有其他的3、5、12进制,当然cout也没有报错,而是按默认的十进制输出。

2、设置宽度可以通过cout.width(***) 或者  cout<<setw(***)来完成,和printf一样默认补空格,可以分左补和右补 cout.setf(ios::left / right) 或者  cout << setiosflags(ios::left / right)  要注意的是left是输出靠左(右补)right则是左补空格,同样不够则按原样输出(不补不截断) ,并且可以通过cout.fill('*') 或者 cout << setfill('*') 来实现补其他字符

3、控制浮点数输出精度 :

默认浮点数输出六位数字(不包括小数点,不够的按照数字长度输出不补0),超过6位的情况下先判断整数部分是否超过6位,如果超过,则按照科学计数法输出,否则对小数部分四舍五入,保证  整数部分 + 小数部分的位数 等于 6

123.456789   输出 123.457  (四舍五入,整数3位+小数3位)

123456.789   输出 123457    (四舍五入,整数6位+小数0位)

12345678.9   输出1.23457e+007  (科学计数法 1.23457 * 10^7  尾数四舍五入)

浮点数的输出格式有:

cout.setf(ios::scientific)  或者  cout<<setiosflags(ios::scientific)   设置成科学计数法输出

cout.setprecision(*)  或者 cout<<setprecision(*)   设置输出精度(一般与fixed一起使用)

cout.setf(ios::fixed)  或者  cout<<setiosflags(ios::fixed)   设置小数点位数固定(默认6)

结合2里的 setw  fill等来控制浮点数的格式化输出

 另外:科学计数法不能使用精度格式,否则出错;setiosflags还有其他的显示格式控制方式:ios::skipws  忽略前导空格  ios::upercase  大写  ios::showpos 正数显示+   ios::showpoint 强制显示小数点 等等

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值