1.基于控制台的输入输出:iostream(cin,cout,cerr,clog,cout.put//字符输出,cout.write//无格式的输出和格式化的输出,cin.get,cin.getline//字符和字符串的输入,cin.read//无格式的输入和格式化的输入)//read。write主要用于文件访问
2.基于文件的输入输出:fstream
访问文件的四个步骤:
定义一个文件流对象
ifstream in1; ofstream out1; fstream io;
打开文件
in1.open("D:\\test.dat"); out1.open("file",ios::out|ios::app|ios::binary);
操作文件中的数据
out1<<x; in1>>x;
关闭文件
in1.close(); out1.close();
3.格式化的输入输出:iomanip(setw(),setprecision,showbase.....)
4.自定义输出流操纵符
ostream &tab//操纵符名(ostream &os) {return os<<"\t";//需要执行的操作}
#include <iostream> #include<fstream> using namespace std; ostream &tab(ostream &os) {return os<<"\t";} int main() { char ch[100]; cin.get(ch,80,'.'); cin.getline(ch,80,'.'); cin.read("sdddddddd",10); cout.put('s').put('\n'); cout.write("sdsf",7); cout<<"a"<<tab<<"c"; return 0; }
5.文件的随机访问
in1.seekp(10,ios::end); in1.seekg(2,ios::cur);
6.二进制文件的读写
#include<iostream> #include<fstream> using namespace std; int main() { ofstream out; ifstream in; fstream io; int i,x; out.open("file"); if(!out) cout<<"creat file error"; for(i=0;i<10;i++) { cin>>x; out.write((char *)(&x),sizeof(int)); } out.close(); in.open("file"); if(!in) cout<<"open file error"; in.read((char *)(&x),sizeof(int)); while(!in.eof()) { in.read((char *)(&x),sizeof(int)); cout<<x<<' '; } in.close(); cout<<endl; io.open("file"); io.seekp(5*sizeof(int)); x=20; io.write((char *)(&x),sizeof(int)); io.seekg(0); io.read((char *)(&x),sizeof(int)); while(!io.eof()) { cout<<x<<' '; io.read((char *)(&x),sizeof(int)); } io.close(); }