cin 和 cout 充当了 scanf 和 printf 的功能。但他们并不是函数。而是类对象。
1. IO 类图关系
2. 流类综述
2.1 IO对象不可复制或赋值
#include <fstream>
#include <iostream>
fstream printf(fstream fs)
{
}
using namespace std;
int main()
{
fstream fs1,fs2;
//fs1 = fs2;
//fstream fs3(fs2);
return 0;
}
2.2 IO对象是缓冲的
int main()
{
cout<<"aldksfj;lasdkfj;alsd";
while(1);
return 0;
}
下面几种情况会导致刷缓冲
1,程序正常结束,作为 main 函数结束的一部分,将清空所有缓冲区。
2,缓冲区满,则会刷缓冲。
3,endl, flush 也会刷缓冲。
4,在每次输出操作执行完后,用 unitbuf 操作符设置流的内部状态,从而清空缓冲区。
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
cout<<"hi"<<endl;
cout<<"hi"<<flush;
cout<<unitbuf<<"hi";
while(1);
return 0;
}
2.3 重载了<< 和 >>运算
__ostream_type&
operator<<(long __n)
{ return _M_insert(__n); }
__ostream_type&
operator<<(unsigned long __n)
{ return _M_insert(__n); }