目录
前言
C++输入和输出流(一)——标准输入输出记录了cin
和cout
的一些使用总结。本文记录文件输入输出的一些代码,理论太多了,其实看完代码,大概就可以使用了。
文件I/O
文件输入流:ifstream 文件输出流:ofstream
文件输入输出流:fstream
这些就表示要使用文件输入输出流需要包含的头文件为ifstream.h;ofstream.h;
fstream.h;
文件流类和文件流对象
输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的。在实际应用中,常以磁盘文件作为对象。即从磁盘文件读取数据,将数据输出到磁盘文件。
和文件有关系的输入输出类主要在fstream.h这个头文件中被定义,在这个头文件中主要被定义了三个类,由这三个类控制对文件的各种输入输出操 作,他们分别是ifstream、ofstream、fstream,其中fstream类是由iostream类派生而来,他们之间的继承关系见下图所示。
由于文件设备并不像显示器屏幕与键盘那样是标准默认设备,所以它在fstream.h头文件中是没有像cout那样预先定义的全局对象,所以我们必须自己定义一个该类的对象。
ifstream
类,它是从istream
类派生的,用来支持从磁盘文件的输入。
ofstream
类,它是从ostream
类派生的,用来支持向磁盘文件的输出。
fstream
类,它是从iostream
类派生的,用来支持对磁盘文件的输入输出。
C++普通文件输入输出操作
#include <iostream>
#include <fstream>
#include <string.h>
// 文件流类和文件流对象
// 输入流用来读文件
// 输出流用来写文件
using namespace std;
int main()
{
char* fname = "2.txt";
ofstream fout(fname, ios::app); // 建一个输出流对象和文件关联 // 默认是ios::out, ios::app表示在打开文件末尾添加内容
if(!fout)
{
cout << "open error" << endl;
return 0;
}
// fout.open(fname);
fout << "hello... a" << endl;
fout.close();
// 读文件
ifstream fin;
fin.open(fname, ios::in); // 默认是ios::in
char ch;
while(fin.get(ch))
{
cout << ch;
}
fin.close();
return 0;
}
C++二进制文件输入输出操作
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
// 文件流类和文件流对象
// 输入流用来读文件
// 输出流用来写文件
class Teacher
{
public:
Teacher()
{
age = 33;
strcpy(name, "");
}
Teacher(int age, char* str)
{
this->age = age;
strcpy(name, str);
}
void printT()
{
cout << "age=" << age << " "
<< "name=" << name << endl;
}
private:
int age;
char name[32];
};
int main()
{
char* fname = "1.dat";
ofstream fout(fname, ios::binary);
if(!fout)
{
cout << "open error" << endl;
}
Teacher t1(32, "T32");
Teacher t2(33, "T33");
fout.write((char*)&t1, sizeof(t1));
fout.write((char*)&t2, sizeof(t2));
fout.close();
ifstream fin(fname);
Teacher tmp;
fin.read((char*)&tmp, sizeof(tmp));
tmp.printT();
fin.close();
return 0;
}
总结
其实最经常使用的东西是最好的东西,而且往往是实现起来最复杂使用起来最简单的东西!这样的东西用来学习对自己非常有好处,但是实际使用的话,掌握一些例子,能够快速开发其实就足够了!
附上《传智播客扫地僧c++基础和进阶课堂讲义.docx》下载地址。