c++文件的读写
程序员文章站
2022-07-06 12:33:50
c++文件的读写 1.文本方式的写文件 3.二进制方式的写文件 c++ include include using namespace std; int main(){ int ar[] = {11,232,123123,1223,455,4,4,5,56,4,33}; ofstream ofile ......
c++文件的读写
1.文本方式的写文件
#include <iostream> #include <fstream> using namespace std; int main(){ int ar[] = {1123,123,43,45,63,43,2,3}; //方法1,ios::out含义是也写的方式打开流 ofstream ofile1("./test.txt", ios::out); //方法2 ofstream ofile2; ofile2.open("./test.txt"); if(!ofile1){//文件打开失败 cerr << "open err" << endl; exit(1); } for(int i = 0; i < sizeof(ar) / sizeof(int); ++i){ ofile1 << ar[i] << " "; } ofile1.close(); }
2.文本方式的读文件
#include <iostream> #include <fstream> using namespace std; int main(){ int ar[10]; ifstream ifile("./test.txt",ios::in); if(!ifile){ cerr << "open err" << endl; exit(1); } for(int i = 0; i < 10; ++i){ //用空格分割读进数组 ifile >> ar[i]; } }
3.二进制方式的写文件
#include <iostream> #include <fstream> using namespace std; int main(){ int ar[] = {11,232,123123,1223,455,4,4,5,56,4,33}; ofstream ofile("./text2.txt", ios::out | ios::binary); if(!ofile){ cerr << "open err" << endl; } ofile.write((char*)ar, sizeof(ar)); ofile.close(); }
4.二进制方式的读文件
#include <iostream> #include <fstream> using namespace std; int main(){ int ar[10]; ifstream ifile("./text2.txt",ios::in | ios::binary); if(!ifile){ cerr << "open err" << endl; } ifile.read((char*)ar, sizeof(ar)); ifile.close(); }
5.按位置读写文件
- 文本方式的按位置读
假设文件的内容:【1 12 222 3232 2232323】,每个数字节数都不一样,不能正确读出想要的。
解决办法,使用二进制方式的按位置读。
#include <iostream> #include <fstream> using namespace std; int main(){ ifstream ifile("./test.txt", ios::in); if(!ifile){ cerr << "open err" << endl; } int index; int value; while(1){ cin >> index; ifile.seekg(index, ios::beg); //移动指针 ifile >> value; cout << value << endl; } }
- 进制方式的按位置读
#include <iostream> #include <fstream> using namespace std; int main(){ ifstream ifile("./test.txt", ios::in | ios::binary); if(!ifile){ cerr << "open err" << endl; } int index; int value; while(1){ cin >> index; ifile >> value; cout << value << endl; } }
6.文件与对象的例子
在构造函数里读取文件A,用文件A里的数据初始化对象;在析构函数里把对象的数据写入文件A。
#include <iostream> #include <fstream> using namespace std; class C{ friend ostream& operator<<(ostream&, const C&); public: C() : shi(0), xu(0){ ifstream ifile("./data.dat", ios::in); if(!ifile){ cerr << "open err" << endl; exit(1); } ifile >> shi >> xu; ifile.close(); } C(int i, int j) : shi(i), xu(j){} ~C(){ ofstream ofile("./data.dat", ios::out); if(!ofile){ cerr << "open err" << endl; exit(1); } ofile << shi << " " << xu; ofile.close(); } C(int i, int j) : shi(i), xu(j){} ~C(){ ofstream ofile("./data.dat", ios::out); if(!ofile){ cerr << "open err" << endl; exit(1); } ofile << shi << " " << xu; ofile.close(); } void setC(int i, int j){ shi = i; xu = j; } private: int shi; int xu; }; ostream& operator<<(ostream& out, const C& c){ out << "(" << c.shi << "," << c.xu << ")"; return out; } int main(){ C c; cout << c << endl; c.setC(10,22); cout << c << endl; }
下一篇: js控制文本框禁止输入特殊字符详解