第五章:
5.文件操作
作用:程序运行时产生的数据都是临时数据,程序运行结束后都会被释放,文件能将数据持久化。
对文件进行操作需要包含头文件
两种文件类型:
-
文本文件:以文本ASCII码形式存储在计算机里
-
二进制文件:以文本二进制形式存储在计算机里
操作文件的三大类:
-
ofstream 写操作
-
ifstream 读操作
-
fstream 读写操作
5.1 文本文件
5.1.1 写文件
步骤:
-
包含头文件:#include
-
创建流对象:ofstream ofs;
-
打开文件:ofs.open(“文件路径”, 打开方式);
-
写入数据:ofs << “写入的数据”
-
关闭文件:ofs.close();
文件打开方式:
打开方式 | 说明 |
---|---|
ios::in | 为读文件而打开文件 |
ios::out | 为写文件而打开文件 |
ios:ate | 初始位置为文件尾 |
ios::app | 追加方式写文件 |
ios::trunc | 如果文件存在会先删除,再创建 |
ios::binary | 二进制方式打开文件 |
文件打开方式可配合使用,用|操作符即可。
如用二进制方式写文件:ios::binary | ios::out
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream ofs;
ofs.open("text.txt", ios::out);
ofs << "hello world" << endl;
ofs << "hello C++" << endl;
ofs.close();
system("pause");
return 0;
}
5.1.2 读文件
步骤:
-
包含头文件:#include
-
创建流对象:ifstream ifs;
-
打开文件并判断打开是否成功:ifs.open(“文件路径”,打开方式)
-
读取数据:四种方式,代码中会说明
-
关闭文件:ifs.close();
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream ifs;
ifs.open("text.txt", ios::in);
if (!ifs.is_open()) //判断文件是否打开成功
{
cout << "打开文件失败!" << endl;
return 0;
}
//读取数据
//第一种方式
/*char buf[1024] = { 0 };
while (ifs >> buf)
{
cout << buf << endl;
}
system("pause");*/
//第二种方式
/*char buf[1024] = { 0 };
while (ifs.getline(buf, sizeof(buf)))
{
cout << buf << endl;
}*/
//第三种方式
/*string buf;
while (getline(ifs, buf))
{
cout << buf << endl;
}*/
//第四种方式
char c;
while ((c = ifs.get()) != EOF)
{
cout << c;
}
ifs.close();
return 0;
}
5.2 二进制文件
打开方式指定:ios::binary
5.2.1 写文件
二进制方式写文件可用流对象调用成员函数write
函数原型:ostream& write(const char * buffer, int len);
说明:字符指针buffer指向内存中一段存储空间。len是读写的字节数。文章来源地址https://www.toymoban.com/news/detail-844973.html
#include <iostream>
#include <fstream>
using namespace std;
class Student
{
public:
char name[20];
int age;
};
int main()
{
ofstream ofs("stuInfo.txt", ios::out | ios::binary);
Student s = { "小明", 18 };
ofs.write((const char*)&s, sizeof(Student));
ofs.close();
system("pause");
return 0;
}
5.2.2 读文件
二进制方式读文件可用流对象调用成员函数read
函数原型:istream& read( char * buffer, int len);文章来源:https://www.toymoban.com/news/detail-844973.html
说明:字符指针buffer指向内存中一段存储空间。len是读写的字节数。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class Student
{
public:
char name[20] ;
int age;
};
int main()
{
ifstream ifs;
ifs.open("stuInfo.txt", ios::binary | ios::in);
if (!ifs.is_open())
{
cout << "打开文件失败!" << endl;
return 0;
}
Student s;
ifs.read((char*)&s, sizeof(s));
cout << "姓名:" << s.name << " 年龄:" << s.age << endl;
ifs.close();
system("system");
return 0;
f(s));
cout << "姓名:" << s.name << " 年龄:" << s.age << endl;
ifs.close();
system("system");
return 0;
}
到了这里,关于C++核心高级编程 --- 5.文件操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!