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时,不会等到缓存区满再输出,因为在清除缓存前必须将缓存中的内容输出来.这是很显然的