C++中换行符/n与endl有什么区别?

 我来答
匿名用户
2013-10-20
展开全部
endl是C++专有的流输出结束符..
cout<<endl;
就是说这个流结束了,,可以从内存中输出出来...
cout<<;
没有endl;他会留在内存中,程序结束时才输出..
'/n'是回车符,没有什么其他的含义,就是输出一个回车!

一般来说输出的字符一般先要传递到缓冲区,然后遇到下列情况时方才输出到标准输出位置(屏幕、打印机、磁盘或者文件)
1 缓冲区满的时候,
2 遇到换行符的时候,
3 需要输入的时候,
4 函数结束时候,
因此我们执行如下的语句也可以立即显示在屏幕上,如:
cout < < "hello world ";
这一点我很不理解,不是说flush或者endl才可以刷新缓冲区的吗,为何上面四种情况都可以刷新刷新缓冲区,既然都可以刷新,那么还要flush和endl干什么?另外下面又出现一种情况满足了上面的四种中的一种情况却不立即显示在屏幕上,如:
#include <iostream>
using namespace std;
int main()
{
cout < < "hello\r ";
return 0;
}
该程序执行后未输出任何字符,但是将\r换成其它任何控制符就可以输出,或者直接在后面加\n也可以立即显示,这又是为何,另外还有一种情况:
#include <iostream.h>
#include <stdio.h>
int main()
{
char a[43];
cout < < "dfs ";
gets(a);
return 0;
}
该程序在VC60和DEV下面运行结果不同,在VC60中不显示dfs,但是会先要求你输入字符,在DEV中先显示dfs,然后要求你输入字符,我们只说VC60,这又是为何原因?
这样两种情况从某种程度上否定了上面四种情况:
1 缓冲区满的时候,
2 遇到换行符的时候,
3 需要输入的时候,
4 函数结束时候,
那么这里就有一个问题,在标准C++中,\n似乎与endl一样能够换行并且刷新缓冲区,而cout < < "hello "也可以直接将暂时存储在缓冲区中的字符立即输出在屏幕上,那么它们是不是都执行了endl的功能,即刷新缓冲区并将数据立即写入存储设备或者显示设备中。
问题实在太多,一个是\n与endl的区别,一个是四种情况是否执行了刷新缓冲区,四种情况如下:
1 缓冲区满的时候,
2 遇到换行符的时候,
3 需要输入的时候,
4 函数结束时候,
第三个是某些已经满足上面四种情况的为何在暂时存放在缓冲区中不立即实现出来,如:
#include <iostream.h>
#include <stdio.h>
int main()
{
char a[43];
cout < < "dfs ";
gets(a);
return 0;
}
第四个问题是回车键的ASCII码等于\n的ASCII码,是不是代表着\n就是回车键。
好了,请高手指教,谢谢。
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
匿名用户
2013-10-20
展开全部
endl在C++中使用时一般用在ostream的子类中,使用方法如

1 cout << "It's a wonderful life!" << endl;

这时除在标准输出打印出It's a wonderful life!外, cout类还要将自己的
缓冲区清空,类似C的fflush( stdout ),而

2 cout << "It's a wonderful life!" << "\n";

却不会有这一动作, 这样在某些情况下语句2将不能打印出要求内容,因为它们还在
cout的缓冲区中.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-20
展开全部
endl有强制刷新缓冲区的功能
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-20
展开全部
2的的回答 好经典本来想说了,但以我的能力没什么补充的了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式