文本文件:文件以文本的ASCII码形式存储在计算机中;
二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂他们。
一、文本文件
1、写文件
#include <iostream> #include <string> #include <fstream> //包含文件头 using namespace std; //文本文件,写文件 void test01() { //创建流对象 ofstream ofs; //打开文件 为写文件而打开文件 ofs.open("test.txt", ios::out); //写数据 ofs << "aaaa" << endl; ofs << "bbbb" << endl; ofs << "cccc" << endl; ofs << "dddd" << endl; //关闭文件 ofs.close(); } int main() { test01(); return 0; }
2、读文件
#include <iostream> #include <string> #include <fstream> //包含文件头 using namespace std; //文本文件,读文件 推荐使用前三种方法 void test01() { //创建流对象 ifstream ifs; //打开文件并判断文件是否打开成功 ifs.open("test.txt", ios::in); if (!ifs.is_open()) { cout << "文件打开失败" << endl; return; } //读数据 //第一种 // 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) { cout << c; } //关闭文件 ifs.close(); } int main() { test01(); return 0; }
aaaa bbbb cccc dddd
二、二进制文件
1、写文件
#include <iostream> #include <fstream> //包含文件头 using namespace std; //二进制文件 写文件 避免使用string class Person { public: char m_Name[64];//姓名 int m_Age;// }; void test01() { //创建流对象、打开文件 ofstream ofs("person.txt", ios::out | ios::binary); //写文件 Person p = {"zhangsan", 18}; ofs.write((const char *) &p, sizeof(p)); //关闭文件 ofs.close(); } int main() { test01(); return 0; }
2、读文件
#include <iostream> #include <fstream> //包含文件头 using namespace std; //二进制文件 读文件 避免使用string class Person { public: char m_Name[64];//姓名 int m_Age;// }; void test01() { //创建流对象、打开文件 ifstream ifs("person.txt", ios::in | ios::binary); if (!ifs.is_open()) { cout << "文件打开失败" << endl; return; } //写文件 Person p; ifs.read((char *) &p, sizeof(Person)); cout << "姓名:" << p.m_Name << " 年龄:" << p.m_Age << endl; //关闭文件 ifs.close(); } int main() { test01(); return 0; }
姓名:zhangsan 年龄:18