endl和'/n'

1.endl是一个特殊值,称为操纵符,将它写入输出流时,不仅具有输出换行的效果,而且它刷新与设备关联的缓冲区,通过刷新缓冲区,用户可立即看到写入到流中的输出;'/n'仅仅是一个换行符,将它写入到输出流时,只能起到一个换行的作用,不能刷新输出。 因此建议,在能用cout < <endl;的形式时不要用cout < <"/n"形式。 程序员经常在调试过程中插入输出语句,这些语句都应该刷新输出流。忘记刷新输出流可能会造成输出信息停留在缓冲区,如果程序崩溃,将会导致对程序崩溃位置的错误判断。

2.

#include "stdafx.h"
#include <iostream>
#include <iomanip>


int _tmain(int argc, _TCHAR* argv[])
{
 std::cout << std::setw(10) << std::setfill('*') << std::endl;    // (1)
 std::cout << std::setw(10) << std::setfill('*') << '/n';             // (2)
 return 0;
}

 

关于“第一行什么也没输出,第二行输出”的一个应该是正确的解释:

    endl为put('/n')   +   flush(),有的系统上换行符不是'/n',另当别论。而put()不能使用setw()和setfill()指定格式,所以只是单纯的输出一个字符,所以第一行没有输出。   这个和flush无关,flush只是强迫输出,并不清理标志。   

转自http://blog.csdn.net/mengxiangying504/article/details/4768435


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值