首页 > 编程语言 >【C++从0到1-黑马程序员】文件操作

【C++从0到1-黑马程序员】文件操作

时间:2024-03-25 15:30:10浏览次数:27  
标签:文件 ifs 二进制 ios C++ 打开方式 程序员 ofs 黑马

C++从0到1 - 黑马程序员 课程学习笔记

课程链接:61 C++文件操作-文本文件-写文件_哔哩哔哩_bilibili

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

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

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

文件类型分为两种:

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

操作文件的三大类:

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

1. 文本文件

1.1 写文件

写文件步骤:

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

⭕文件打开方式:

打开方式

解释

ios::in

为读文件而打开文件

ios::out

为写文件而打开文件

ios::ate

初始位置:文件尾

ios::app

追加方式写文件

ios::trunc

如果文件存在,先删除,再创建

ios::binary

二进制方式

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

// 判断文件是否打开成功
if(!ofs.is_open())
{
    cout << "文件打开失败!" << endl;
    return;
}

1.2 读文件

读文件步骤:

  1. 包含头文件                                 #include
  2. 创建流对象                                 ifstream ifs;
  3. 打开文件                                     ifs.open("文件路径",打开方式)
  4. 读数据                                        四种方式进行读取
  5. 关闭文件                                    ifs.close()
// 判断文件是否为空
char ch;
ifs >> ch;
if (ifs.eof())
{
    cout << "文件为空" << endl;
        this->isEmpty = true;
    ifs.close();
      return;
}
ifs.putback(ch);// 将上述读取的单个字符放回

读数据的四种方式

// 读数据的四种方式
// 1.
char buf[1024] = {0};
while(ifs>>buf)
{
    cout << buf << endl;
}
// 2. 
char buf[1024] = {0};
while(ifs.getline(buf,sizeof(1024)))
{
    cout << buf << endl;
}
// 3. 
string buf;
while(getline(ifs,buf))
{
    cout << buf << endl;
}
// 4. 不推荐
char c;
while((c=ifs.get())!=EOF)
{
    cout << c;
}

2. 二进制文件

以二进制的方式对文件进行读写操作,打开方式应该指定为 ios::binary

2.1 写文件

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

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

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

2.2 读文件

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

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

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

标签:文件,ifs,二进制,ios,C++,打开方式,程序员,ofs,黑马
From: https://blog.csdn.net/rabbit_qi/article/details/136987925

相关文章

  • 【C++从0到1-黑马程序员】引用
     C++从0到1-黑马程序员课程学习笔记课程链接: 06C++中的引用-引用的基本语法_哔哩哔哩_bilibili1.引用的基本语法作用:给变量起别名语法:数据类型&别名=原名2.引用的注意事项1.引用必须有初始化    举个......
  • 这可能是国内Qt/C++界最受欢迎开源项目之一/5.8Kstar/持续迭代更新
    一、前言本项目大概在2020年开始的,大概在2022年重写了一遍,主要是分门别类存放。本项目主要是QWidget编写的一些开源的demo,支持Qt4、Qt5、Qt6,支持任意系统,预计会有100多个,一直持续更新完善,代码简洁易懂注释详细,每个都是独立项目,非常适合初学者,代码随意传播使用。不仅有界面UI相关,......
  • C++ Class
    this指针this指针是一个const指针,指向当前对象,通过this可以访问当前对象的所有成员,无论是protect/private/public。以下是一个示例:#include<iostream>classstu{public:voidsetA(intA);voidsetB(intB);voidprint();private:intA,......
  • cmdline---C++命令行解析库
    cmdline项目托管地址:https://github.com/tanakh/cmdlinehttps://blog.51cto.com/u_15127663/4587654https://www.cnblogs.com/ljbguanli/p/7235424.html//includecmdline.h#inclue<iostream>#include"cmdline.h"intmain(intargc,char*argv[]){......
  • C++循环结构(下)
    for循环语句作用:满足循环条件,执行循环语句语法:for(起始表达式;条件表达式;末尾循环体){循环语句}#include<iostream>usingnamespacestd;intmain(){ //从数字0打印到9 for(inti=0;i<10;i++){ cout<<i<<endl; } system("pause"); return0;}for循环语......
  • 互联网编程必读-有效的现代C++
    本书介绍    掌握C++11和C++14不仅仅是熟悉它们引入的特性(例如,自动类型声明、移动语义、lambda表达式和并发支持)。挑战在于学会有效地使用这些特性—这样你的软件才是正确的、高效的、可维护的和可移植的。这就是这本实用书的用武之地。它描述了如何使用C++11和C++14......
  • 华为OD机试C++ - 游戏分组
    游戏分组前言:本专栏将持续更新互联网大厂机试真题,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于大厂机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:[email protected];备注:CSDN。题目描述部门准备举办一场王者......
  • 华为OD机试C++ - 围棋的气
    围棋的气前言:本专栏将持续更新互联网大厂机试真题,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于大厂机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:[email protected];备注:CSDN。题目描述围棋棋盘由纵横各19条......
  • C++智能指针
    为什么需要智能指针对于普通指针,在程序结束前我们需要将每个指针都进行free,以免造成内存泄漏。但是手动释放指针是麻烦的,并且一旦漏掉就会造成内存泄漏。因此在C++11中引入智能指针避免此种情况的发生。智能指针包括std::shared_ptr/std::unique_ptr/std::weak_ptr,需要使用头文......
  • L2-019 悄悄关注 (25分) c++代码
    新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列表和其对其他用户的点赞情况,扒出有可能被其悄悄关注的人。输入格式:输入首先在第一行给出某用户的关注......