黑马程序员学习笔记
5、文件操作
5.1 文本文件
写文件
写文件的步骤如下:
- 包含头文件 #include
- 创建流对象 ofstream ofs;
- 打开文件 ofs.open(“文件路径”, 打开方式);
- 写数据 ofs << “写入数据”;
- 关闭文件 ofs.close();
#include <iostream>
using namespace std;
#include <fstream> //包含头文件
void test01()
{
//1、包含头文件 fstream
//2、创建流对象
ofstream ofs;
//3、指定打开方式
ofs.open("test.txt", ios::out);
//4、写文件
ofs << "姓名:张三" << endl;
ofs << "性别:男" << endl;
ofs << "年龄:18" << endl;
//5、关闭文件
ofs.close();
}
int main()
{
test01();
system("pause");
return 0;
}
读文件
读文件的步骤如下:
- 包含头文件 #include
- 创建流对象 ifstream ifs;
- 打开文件 ifs.open(“文件路径”, 打开方式);
- 读数据 四种方式读取
- 关闭文件 ifs.close();
读文件的四种方式
//第一种
char buf[1024] = { 0 };
while (ifs >> buf)
{
cout << buf << endl;
}
//第二种
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) // EOF end of file
{
cout << c;
}
5.2 二进制文件
写文件
#include <iostream>
using namespace std;
#include <fstream> //包含头文件
class Person
{
public:
char m_Name[64]; //姓名
int m_Age; // 年龄
};
void test01()
{
//1、包含头文件 fstream
//2、创建流对象
ofstream ofs("person.txt", ios::out | ios::binary);
//3、打开文件,并判断是否打开成功
//ofs.open("person.txt", ios::out | ios::binary);
//4、写文件
Person p = { "张三", 18 };
ofs.write((const char*)&p, sizeof(Person));
//5、关闭文件
ofs.close();
}
int main()
{
test01();
system("pause");
return 0;
}
读文件
函数原型:
istream& read (char *buffer, int len);
参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数
#include <iostream>
using namespace std;
#include <fstream> //包含头文件
class Person
{
public:
char m_Name[64]; //姓名
int m_Age; // 年龄
};
void test01()
{
//1、包含头文件 fstream
//2、创建流对象
ifstream ifs;
//3、打开文件,并判断是否打开成功
ifs.open("person.txt", ios::in | ios::binary);
if (!ifs.is_open())
{
cout << "文件打开失败" << endl;
return;
}
//4、读文件,判断文件是否打开成功
Person p;
ifs.read((char*)&p, sizeof(Person));
cout << "姓名:" << p.m_Name << " 年龄:" << p.m_Age << endl;
//5、关闭文件
ifs.close();
}
int main()
{
test01();
system("pause");
return 0;
}