二进制文件写:
#include<iostream> #include<fstream> using namespace std; int main(int argc, char const *argv[]) { if (argc != 3) { cout << "File name missing!" << endl; return 0; } ifstream inFile(argv[1], ios::binary|ios::in); if (!inFile) { cout << "Source file open error." << endl; return 0; } ofstream outFile(argv[2], ios::binary|ios::out); if (!outFile) { cout << "New file open error." << endl; inFile.close(); return 0; } char c; while (inFile.get(c)) outFile.put(c); outFile.close(); inFile.close(); return 0; }
二进制文件读:
#include<iostream> #include<fstream> #include<cstring> using namespace std; class CStudent { public: char szName[20]; int nScore; }; int main() { CStudent s; ifstream InFile("students.dat", ios::out|ios::binary); if(!InFile) { cout << "error" << endl; return 0; } while (InFile.read((char*)&s, sizeof(s))) { int nReadedBytes = InFile.gcount(); cout << s.szName << " " << s.nScore << endl; } InFile.close(); return 0; }
二进制文件修改:
#include<iostream> #include<fstream> #include<cstring> using namespace std; class CStudent { public: char szName[20]; int nScore; }; int main() { CStudent s; fstream iofile("students.dat", ios::in|ios::out|ios::binary); if(!iofile) { cout << "error" << endl; return 0; } iofile.seekp(2*sizeof(s), ios::beg); iofile.write("Mike", strlen("Mike")+1); iofile.seekg(0, ios::beg); while (iofile.read((char*)&s, sizeof(s))) { int nReadedBytes = iofile.gcount(); cout << s.szName << " " << s.nScore << endl; } iofile.close(); return 0; }
文件拷贝:
#include<iostream> #include<fstream> using namespace std; int main(int argc, char const *argv[]) { if (argc != 3) { cout << "File name missing!" << endl; return 0; } ifstream inFile(argv[1], ios::binary|ios::in); if (!inFile) { cout << "Source file open error." << endl; return 0; } ofstream outFile(argv[2], ios::binary|ios::out); if (!outFile) { cout << "New file open error." << endl; inFile.close(); return 0; } char c; while (inFile.get(c)) outFile.put(c); outFile.close(); inFile.close(); return 0; }