文件操作
5.1.1写文件:
写文件步骤:
通过
“流对象”
这个对象,就可以和文件打交道,操作文件,往文件写内容了。
文件打开方式:
1 #include<iostream> 2 using namespace std; 3 #include<fstream>//头文件包含 4 5 6 //文本文件 写文件 7 8 9 10 11 void test01() 12 { 13 //1、包含头文件 fstream 14 15 //2、创建流对象 16 17 ofstream ofs;//把数据给流出去 18 19 //3、制定打开方式 20 ofs.open("test.txt",ios::out); 21 22 //4、写内容 23 ofs << "姓名: 张三" << endl; 24 ofs << "性别: 男" << endl; 25 ofs << "年龄: 18" << endl; 26 27 //5、关闭文件 28 ofs.close(); 29 30 } 31 int main() 32 { 33 test01(); 34 35 36 system("pause"); 37 return 0; 38 }
5.1.2读文件
读文件步骤
1 #include<iostream> 2 #include<fstream> 3 using namespace std; 4 #include<string> 5 6 //文本文件 读文件 7 8 void test01() 9 { 10 //1、包含头文件 11 12 //2、创建流对象 13 ifstream ifs; 14 15 //3、打开文件 并判断是否打开成功 16 ifs.open("test.txt", ios::in); 17 if (!ifs.is_open()) 18 { 19 cout << "文件打开失败" << endl; 20 return; 21 } 22 //4、读数据 23 24 //第一种 25 //char buf[1024] = { 0 }; 26 //while (ifs >> buf)//读取结束读不到了会返回false 27 //{ 28 // cout << buf << endl; 29 //} 30 31 //第二种 32 //char buf[1024] = { 0 };//初始化字符数组 33 //while (ifs.getline(buf, sizeof(buf))) 34 //{ 35 // cout << buf << endl; 36 //} 37 38 //第三种 39 //string buf; 40 41 //while (getline(ifs, buf)) 42 //{ 43 // cout << buf << endl; 44 //} 45 46 //第四种 47 char c; 48 while ((c = ifs.get()) != EOF)//EOF end of file 49 { 50 cout << c;//注意没有endl; 51 } 52 53 54 55 //5、关闭文件 56 ifs.close(); 57 } 58 59 60 61 int main() 62 { 63 test01(); 64 65 66 system("pause"); 67 return 0; 68 }
ifs.isopen()可以判断是否打开成功
close()关闭文件
5.2二进制文件
以二进制方式对文件进行读写操作
打开方式要确定为ios::binary
5.2.1写文件
1 #include<iostream> 2 using namespace std; 3 #include<fstream> 4 5 //二进制文件 写文件 6 class Person 7 { 8 public: 9 10 char m_Name[64];//姓名//c语言的字符数组代表一个字符串 11 int m_Age;//年龄 12 13 }; 14 void test01() 15 { 16 //1、包含头文件 17 18 //2、创建流对象 19 ofstream ofs("person.txt", ios::out | ios::binary); 20 21 //3、打开文件 22 //ofs.open("person.txt", ios::out | ios::binary); 23 //4、写文件 24 Person p = { "张三", 18 };//构造函数的调用 应该是属于隐式转换法 25 ofs.write((const char *)&p,sizeof(Person)); 26 //5、关闭文件 27 ofs.close(); 28 } 29 30 31 int main() 32 { 33 test01(); 34 35 36 system("pause"); 37 return 0; 38 }
5.2.2读文件
读用write(),写用read()