| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2721 人关注过本帖
标题:请问printf()和cout的区别,具体看实例
只看楼主 加入收藏
yfeng_2008
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-8-17
收藏
 问题点数:0 回复次数:10 
请问printf()和cout的区别,具体看实例
#include<stdio.h>
#include<iostream.h>
void main()
{
for(int i=0;i<5;i++)
{
print("+++++++++++++++++++\n");
cout<<"===================\n";
}
}
同时将上题中的cout<<"=============|n";改成cout<<"============"<<endl;结果又有所不一样
请知道的帮我说明一下为什么会出现这种现象,同时讲一下printf()和cout的区别
搜索更多相关主题的帖子: cout printf 实例 
2008-03-04 00:19
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你自找找啊,cout是输出类,printf是函数,没怎么研究过..你自己找一下啊....

学习需要安静。。海盗要重新来过。。
2008-03-04 09:09
yfeng_2008
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-8-17
收藏
得分:0 
请楼上的说明原因吧,要是查资料还要在这里提问吗?你说cout是输出类,printf是标准输出函数,这个大家都知,我只想知道出现那样的结果为什么,教材上说\n和endl是一样的?
2008-03-04 20:20
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
每研究过这个问题....看看算法吧..这个比较有意义

学习需要安静。。海盗要重新来过。。
2008-03-04 20:22
yfeng_2008
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-8-17
收藏
得分:0 
我看过一些资料,说COUT输出后进入缓冲区,是不是\n是一个转义字符,也就是相当于一个普通字符,而endl是一个运算符(在刷新缓冲区)所以循环一次就刷新一次,而用\n时没有刷新,最后一次性输出
2008-03-04 20:56
hylhp
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2008-2-27
收藏
得分:0 
cout<<"-------"<<'\n';
cout<<"-------"<<endl;
效果一样的,输出后换行
2008-03-05 14:30
yfeng_2008
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-8-17
收藏
得分:0 
cout<<"-------\n";
cout<<"-------"<<endl;
就不一样吧
2008-03-11 22:59
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
/*这样研究一下,看看结果*/
/*与编译器也有差别 DEV-C++ 隔行, VC++ 6.0先把cout输出存入系统,到printf 全部输出之后再输出*/
#include<stdio.h>
#include<iostream.h>
int main()
{
for(int i=0;i<5;i++)
{
printf("+++++++++++++++++++\n");
/*cout<<"==================="<<endl;*/
cout<<"===================\n";
}
getchar();
return 0;

}
2008-03-12 18:46
yfeng_2008
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-8-17
收藏
得分:0 
大家谈谈自己的想法,这是为什么?
2008-03-18 23:51
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
1.C语言中的输出方式不会等缓存区满,缓存区中是什么就输出什么.
而C++输出流则不同,当缓存区没满时,将输出的内容保存在缓存区中,一旦缓存区满了,就会将其一起输出,这样就能提高输出很多内容的效率,至于缓存区的大小就不用管了,楼主可以试一下下面的程序,A,B会一段段的交替输出来,在输出B的时候就是缓存区满的时候.

程序代码:
#include<iostream.h>
#include<stdio.h>

int main()
{
    
    char a[1024]="aaaaaaaaaaaaaaaaaaaaaa";
    char b[1024]="bbbbbbbbbbbbbbbbbbbbbb";
    for(int i=0;i<512;i++)
    {
        printf("%s\n",a);    //这是C语言中的输出函数stdio.h中
        cout<<b<<"\n";        //这是C++的输出函数,在iostream.h中
                  //cout<<b<<endl;      //这里的endl会清空缓存
    }
    return 0;
}


上面会出现这种情况主要是因为楼主使用旧版本的头文件,这里面没有PRINTF之类的输出函数,而新版本将PRINTF之类 的函数都包含了进来.上面相当于是两个版的输出流的一个对比.

2.\n和endl这区别在于:
\n只是简单的插入一个换行符而endl则插入一个换行符后再清空缓存(MSDN中有这么一段:
endl:This manipulator, when inserted into an output stream, inserts a newline character and then flushes the buffer.)
所以当使用endl时,不会等到缓存区满再输出,因为在清除缓存前必须将缓存中的内容输出来.这是很显然的

雁无留踪之意,水无取影之心
2008-03-19 12:42
快速回复:请问printf()和cout的区别,具体看实例
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012913 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved