- 标准输入输出流:cin,cout,cerr,clog。其中cerr没有缓冲区。
int a;
cin >> a;
//此时,cin流会从缓冲区中拿数据,若缓冲区没有,则等待键盘输入
EOF结束符在键盘上为Ctrl+Z
- 文件流操作,写入时增加app属性表示不覆盖之前内容,追加在末尾
- windows下文件以回车+换行作为一行结束标志,而在linux下只使用换行作为结束标志,在windows下使用文本模式读写时会对结束标志进行转换
- 当想将内存中的对象写入文件中,需要注意内存中以二进制存贮,因此写入时不需要处理行结束标志
class Person
{
public:
int mAge;
int mID;
public:
Person(int age, int ID)
{
this->mAge = age;
this->mID = ID;
}
};
Person p1(10,20),p2(20,30);
char* FileName = "xxxxx";
//ios::app以在文件末尾追加形式
ofstream osm(FileName, ios::out | ios::binary);//对内存中的二进制数据直接以二进制流的形式打开
osm.write((char*)&p1,sizeof(Person));
osm.write((char*)&p2,sizeof(Person));
//但是写入后文件中内容以二进制的形式显示,无法识别
//将写入文件中的内容,写入对象中去
Person p3,p4;
ifstream ism(FileName, ios::in | ios::binary);
ism.read((char*)&p3,sizeof(Person));
ism.read((char*)&p4,sizeof(Person));