C++文件操作

简介: C++文件操作



🌏1 文件操作

程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放

通过文件可以将数据持久化

C++中对文件操作需要包含头文件 < fstream >

文件类型分为两种:

  1. 文本文件 - 文件以文本的ASCII码形式存储在计算机中
  2. 二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们

操作文件的三大类:

  1. ofstream:写操作
  2. ifstream: 读操作
  3. fstream : 读写操作

🎄1.1文本文件

🍉1.1.1写文件

写文件步骤如下:

  1. 包含头文件
    #include <fstream>
  2. 创建流对象
    ofstream ofs;
  3. 打开文件
    ofs.open(“文件路径”,打开方式);
  4. 写数据
    ofs << “写入的数据”;
  5. 关闭文件
    ofs.close();

文件打开方式:

打开方式 解释
ios::in 为读文件而打开文件
ios::out 为写文件而打开文件
ios::ate 初始位置:文件尾
ios::app 追加方式写文件
ios::trunc 如果文件存在先删除,再创建
ios::binary 二进制方式

注意: 文件打开方式可以配合使用,利用|操作符

**例如:**用二进制方式写文件 ios::binary | ios:: out

示例:

#include <fstream>
void test01()
{
  ofstream ofs;
  ofs.open("test.txt", ios::out);
  ofs << "姓名:张三" << endl; //endl写入文件中表示换行
  ofs << "性别:男" << endl;
  ofs << "年龄:18" << endl;
  ofs.close();
}
int main() {
  test01();
  system("pause");
  return 0;
}

总结:

  • 文件操作必须包含头文件 fstream
  • 读文件可以利用 ofstream ,或者fstream类
  • 打开文件时候需要指定操作文件的路径,以及打开方式
  • 利用<<可以向文件中写数据
  • 操作完毕,要关闭文件
🍉1.1.2读文件

读文件与写文件步骤相似,但是读取方式相对于比较多

读文件步骤如下:

  1. 包含头文件
    #include <fstream>
  2. 创建流对象
    ifstream ifs;
  3. 打开文件并判断文件是否打开成功
    ifs.open(“文件路径”,打开方式);
  4. 读数据
    四种方式读取
  5. 关闭文件
    ifs.close();

示例:

#include <fstream>
#include <string>
void test01()
{
  ifstream ifs;
  ifs.open("test.txt", ios::in);
  if (!ifs.is_open())
  {
    cout << "文件打开失败" << endl;
    return;
  }
  //第一种方式
  //char buf[1024] = { 0 };
  //while (ifs >> buf)  //每一次的buf是空格或回车键(即白色字符)分开的元素
  //{
  //  cout << buf << endl; //并不读入文件中的换行符,因此每读入一行都需要额外加上一个换行符
  //}
  //第二种
  //char buf[1024] = { 0 };
  //while (ifs.getline(buf,sizeof(buf)))
  //{
    getline的第一个参数:读取文件到什么地方
  getline的第二个参数:最多可以读取多少个字符 
  //  cout << buf << endl; //同样也不会读取换行符,需要额外加上
  //}
  //第三种
  //string buf;
  //while (getline(ifs, buf)) //getline需要包含string头文件
  //{
  //  cout << buf << endl;
  //}
  char c;
  while ((c = ifs.get()) != EOF)  //注意不要错写为:‘EOF’
  {
    cout << c; //这种方法会
  }
  ifs.close();
}
int main() {
  test01();
  system("pause");
  return 0;
}

总结:

  • 读文件可以利用 ifstream ,或者fstream类
  • 利用is_open函数可以判断文件是否打开成功
  • close 关闭文件

🎄1.2 二进制文件

以二进制的方式对文件进行读写操作

打开方式要指定为 ios::binary

🍉1.2.1 写文件

二进制方式写文件主要利用流对象调用成员函数write

函数原型 :ostream& write(const char * buffer,int len);

参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数

示例:

#include <fstream>
#include <string>
class Person
{
public:
  char m_Name[64];
  int m_Age;
};
//二进制文件  写文件
void test01()
{
  //1、包含头文件
  //2、创建输出流对象
    //写文件就要使用ofstream,读文件使用ifstream
  ofstream ofs("person.txt", ios::out | ios::binary); //以二进制的性质写入文件
  
  //3、打开文件
  //ofs.open("person.txt", ios::out | ios::binary);
  Person p = {"张三"  , 18};
  //4、写文件
    //&p表示获取p的地址,由于这个地址是一个Person地址,故(const char *)&p将此地址强制转化为const char型地址,因为这是write函数所需要的参数类型
  ofs.write((const char *)&p, sizeof(p));
  //5、关闭文件
  ofs.close();
}
int main() {
  test01();
  system("pause");
  return 0;
}

总结:

  • 文件输出流对象 可以通过write函数,以二进制方式写数据
🍉1.2.2 读文件

二进制方式读文件主要利用流对象调用成员函数read

函数原型:istream& read(char *buffer,int len);

参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数

示例:

#include <fstream>
#include <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;
  }
  Person p;
  ifs.read((char *)&p, sizeof(p));
  cout << "姓名: " << p.m_Name << " 年龄: " << p.m_Age << endl;
}
int main() {
  test01();
  system("pause");
  return 0;
}
  • 文件输入流对象 可以通过read函数,以二进制方式读数据

🕮2 总结

在代码的舞台上,C++翩翩起舞。

纵观代码的山川大地,无边的可能在眼前延展, C++,是智慧的风,吹动着科技的帆船。

用韵律的二进制,谱写着自由的交响曲, C++,是数字艺术的荣光,闪烁在信息的星空。

愿C++永远如诗,激励创造者的灵感。

渴望挑战C++的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多C++的奇迹吧。我们推出了引领趋势的💻C++专栏:《C++从基础到进阶》 ,旨在深度探索C++的实际应用和创新。🌐🔍

相关文章
|
9月前
|
安全 算法 程序员
【C/C++ 文件操作】深入理解C语言中的文件锁定机制
【C/C++ 文件操作】深入理解C语言中的文件锁定机制
271 0
|
9月前
|
移动开发 Linux 程序员
c++文件操作,超详细
c++文件操作,超详细
139 0
|
9月前
|
C++ iOS开发
C++ 文件操作的技术性文章
C++ 文件操作的技术性文章
46 0
|
8月前
|
存储 C++
C++文件操作
C++文件操作
|
9月前
|
存储 C语言 数据安全/隐私保护
C++中的文件操作技术详解
C++中的文件操作技术详解
|
9月前
|
C++
C++语言学习文件操作应用案例
C++文件操作示例:创建`ofstream`对象写入&quot;Hello, World!&quot;到`output.txt`,刷新缓冲区,然后使用`ifstream`读取并打印文件内容。如果文件打开失败,程序将显示错误信息并返回1。
55 3
|
9月前
|
存储 编译器 程序员
【C++ 文件操作与字符串处理】从文件读取到内容分割的全方位指南
【C++ 文件操作与字符串处理】从文件读取到内容分割的全方位指南
877 6
|
9月前
|
C++
深入理解 C++ 中的多态与文件操作
C++中的多态是OOP核心概念,通过继承和虚函数实现。虚函数允许对象在相同操作下表现不同行为,提高代码可重用性、灵活性和可维护性。例如,基类`Animal`声明`makeSound()`虚函数,派生类如`Cat`、`Dog`和`Bird`可重写该函数实现各自叫声。C++也提供多种文件操作,如`fstream`库的`ofstream`、`ifstream`用于读写文件,C++17引入的`&lt;filesystem&gt;`库提供更现代的文件操作接口。
67 0
|
9月前
|
存储 C++
C++从入门到精通:2.3.1文件操作
C++从入门到精通:2.3.1文件操作