C++ iostream 点滴知识点

对齐相关

宽度

ostream 提供接口 width() , 只对下一次输出有效 , 默认宽度为 1 , 也就是没有宽度限制.

对齐

ostream 可以支持 左, 右两侧 三种对齐方式 :

std::ios::left ;
std::ios::right;
std::ios::internal;

( 很奇怪的没有中心对齐) , 可以使用setf()
unsetf() 接口来设置或者取消.

填充

ostream默认使用空格来填充不足宽度部分, 可以使用fill() 接口来指定填充字符.

例子
#include <iostream> 
int main()
{
    std::cout.width(5);
    // 表明属性属于对齐
    std::cout.setf(std::ios::left, std::ios::adjustfield );
    std::cout.fill('_');
    std::cout<<"H"<<"ello World"<<std::endl;
    return 0;
}

输出:

H_____ello World

上面的属性也可以直接插入到流中:

std::cout.width(6); std::cout << std::left <

进制

ostream 读入整数的时候, 默认是10进制的,支持 8进制 , 10进制 和 16进制 .

std::ios::oct;
std::ios::dec;
std::ios::hex;

可以使用setf来指定进制 ( 加上basefield限定)
也可以直接在流中插入流中:

std::cout<<std::hex<<11;
// 输出 B
std::cout.setf( std::ios::hex , std::ios::basefiled);
std::cout<<11;
//还是输出B

重定向或者禁用

我们知道std::cout, std::cin,std::cerr, 都是不可以复制的, 独一无二的对象.
他们提供接口 tie 来重定向自己. 这个接口的参数是 std::iostream * 的新的流, 返回值是上一个流指针.
std::cin 禁止并将原先的值保存:

std::ostream *tie_out = std::cin.tie(nullptr);
禁止C++和C风格的输出混用
std::ios_base::sync_with_stdio(false);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值