Wednesday 6 February 2019

C++ Class Examples

二进制文件读写:下面的程序从键盘输入几个学生的姓名和成绩,并以二进制文件形式存起来
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
class CStudent {
public:
 char szName[20];
 int nScore;
};
int main() {
 CStudent s;
 ofstream OutFile("c:\\tmp\\students.dat", ios::out | ios::binary);
 while (cin >> s.szName >> s.nScore) {
  if (strcmp(s.szName, "exit") == 0)
   break;
  OutFile.write((char*)&s, sizeof(s));
 }
 OutFile.close();
 return 0;
}
二进制文件读写:下面的程序将students.dat文件的内容读出并显示
#include <iostream>
#include <fstream>
using namespace std;
class CStudent {
public:
 char szName[20];
 int nScore;
};
int main() {
 CStudent s;
 ifstream inFile("C:\\Users\kang3\Desktop\students.dat", ios::in | 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;
}
二进制文件读写:下面的程序将 students.dat 文件的Jane的名字改成Mike
#include <iostream>
#include <fstream>
using namespace std;
class CStudent {
public:
 char szName[20];
 int nScore;
};
int main() {
 CStudent s;
 fstream iofile("D:\tmp\students.dat", ios::in|ios::out | ios::binary);
 if (!iofile) {
  cout << "error";
  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)))
  cout << s.szName << " " << s.nScore << endl;
 iofile.close();
 return 0;
}
例子:mycopy 程序,文件拷贝
//用发实例:
//mycopy src.dat dest.dat
//即将 src.dat 拷贝到 dest.dat
//如果 dest.dat 原来就有,则原来的文件会被覆盖
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char* 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;
}

No comments:

Post a Comment