文章目录

  • 一、简介
    • 1.1 文件类型
    • 1.2 C++中操作文件的三大类
  • 二、linux中写文件
    • 2.1 步骤
    • 2.2 文件打开方式
    • 2.3 linux中写文件DEMO
  • 三、linux中读文件
    • 3.1 步骤
    • 3.2 读取文件的方式
    • 3.3 linux中写文件demo

一、简介

程序运行时产生的数据都属于临时数据,程序一旦运行结束都会释放,可以通过读写操作将数据持久化
c++中对文件的操作必须要引入头文件< fstream >

1.1 文件类型

对于读写操作来说,文件类型分为两种:

  • 文本文件 ——以文本的ASCII码形式存储在计算机中
  • 二进制文件——以文本的二进制形式存储在计算机中,用户一般不能读懂,需要编译

1.2 C++中操作文件的三大类

  • ofstream:进行写操作,o表示output,f表示file
  • ifstream:进行读操作,i表示input
  • fstream:读写操作

二、linux中写文件

2.1 步骤

(1)引入头文件

#include <fstream>

(2)创建写入流对象

ofstream ofs;

(3)打开文件

ofstream.open("文件路径",打开方式);//文件路径可以使绝对路径,打开方式件1.2

(4)写数据

ofs << "要写入的数据" << endl;

(5)关闭流

ofs.close();

2.2 文件打开方式

代码 说明
ios::in 读文件时打开
ios::out 写文件时打开,会覆盖上次写入操作
ios::ate 打开文件初始位置在文件尾
ios::app 以追加方式写文件
ios::trunc 如果文件存在,则先删除后创建
ios::binary 以二进制的方式打开文件

注意:文件打开方式可以复合使用,用“|”隔开
例如:用二进制方式写文件:ios::binary | ios::out

2.3 linux中写文件DEMO

(1)创建FileRead.cpp文件(这里文件名应改为FileWrite.cpp)

vim FileRead.cpp

(2)编写程序

#include <iostream>
#include <fstream>//1.引入操作文件类的头文件
using namespace std;//读文件的方法
void readFile()
{//2.创建文件流对象ofstream ofs;//3.打开文件,如果没有,会在同级目录下自动创建该文件ofs.open("file.txt",ios::app);//采取追加的方式写入文件//4.写入文件ofs << "abcdefg" << endl;ofs << "fijklmn" << endl;//5.关闭流ofs.close();
}
//main方法调用
int main()
{readFile();cout << "操作成功,请按任意键继续...";//linux中不能用system("pause")方法,采取这种方式进行提示cin.clear();cin.sync();//清空缓存区cin.get();//接受键盘输入return 0;
}

(3)编译cpp文件

g++ FileRead.cpp


(4)查看文件内容

三、linux中读文件

3.1 步骤

linux中读文件操作和写文件操作步骤类似:
(1)引入头文件

#include <fstream>

(2)创建读取流对象

ifstream ifs

(3)打开文件并判断文件是否打开成功

ifs.open("文件路径",打开方式);

(4)读取数据
有五中读数据的方式,见1.2
(5)关闭流

ifstream. close();

3.2 读取文件的方式

总共有物种读取文件的方式
(1)直接读取所有内容,以空格换行

 int main()
{ifstream ifs;ifs.open("file.txt", ios::in);if (!infile.is_open()){cout << "读取文件失败" << endl;return;}//第一种读取方法,char buf[1024] = { 0 };while (infile>>buf){cout << buf << endl;//输出读取的文本文件数据}
}

(2)char型数组一行一行读取,可读取空格

 int main()
{ifstream ifs;ifs.open("file", ios::in);if (!infile.is_open()){cout << "读取文件失败" << endl;return;}//第二种读取方法char buf[1024]={ 0 };while (infile.getline(buf,sizeof(buf))){cout << buf << endl;}
}

(3)字符串一行一行读取,可读取空格

 int main()
{ifstream ifs;ifs.open("file.txt", ios::in);if (!infile.is_open()){cout << "读取文件失败" << endl;return;}//第三种读取方法string buf;while (getline(infile,buf)){cout << buf << endl;}
}

(4)字符读取,可读空格,效率低

 int main()
{ifstream ifs;ifs.open("file.txt", ios::in);if (!infile.is_open()){cout << "读取文件失败" << endl;return;}//第四种读取方法char c;while ((c=infile.get())!=EOF){cout << c;}
}

(5)存入至vector容器中

 int main()
{ifstream ifs;ifs.open("file.txt", ios::in);if (!infile.is_open()){cout << "读取文件失败" << endl;return;}//第五种读取方法string s;vector<string>v1;while (getline(infile,s)){infile >> s;v1.push_back(s);}for (int i = 0; i < v1.size(); i++){cout << v1.at(i);cout << endl;}infile.close();
}

3.3 linux中写文件demo

(1)创建FileRead.cpp文件

vim FileRead.cpp

(2)编写程序

#include <iostream>
#include <fstream>
using namespace std;void fileRead()
{ifstream ifs;ifs.open("file.txt",ios::in);//没有找到指定文件就返回if(!ifs.is_open()){cout << "没有找到指定文件";return;}//进行读文件操作char buf[1024] = {0};while(ifs >> buf){cout << buf << endl;}ifs.close();
}int main()
{fileRead();cout << "请按任意按钮继续...";cin.clear();cin.sync();cin.get();return 0;
}


(2)编译cpp文件

g++ FileRead.cpp

(3)查看输出

cat file.txt

文本文件内容

第一种方式结果:

第二、三、四、五种方式结果:

C++在linux上读写文件相关推荐

  1. SpringBoot部署项目到Linux上传文件路径问题

    SpringBoot部署项目到Linux上传文件路径问题 使用项目相对路径上传到话会上传到linux服务器到/tmp 临时文件目录中,但是问题是还会报异常 Caused by: java.io.Fil ...

  2. echo添加换行 linux_在 Linux 上创建文件的 10 个方法

    我下面将会介绍多个在 Linux 上创建文件的方法.我建议你选择几个简单高效的来辅助你的工作. -- Vinoth Kumar 我们都知道,在 Linux 上,包括设备在内的一切都是文件.Linux ...

  3. linux文件描述符有什么用,linux上的文件描述符3有什么特别之处?

    我的工作,那将在Linux和Mac OS X上运行的服务器应用程序它是这样的:linux上的文件描述符3有什么特别之处? 启动主要应用 控制器进程的叉 调用lock_down()在控制过程中 再次叉终 ...

  4. 合并和排序 Linux 上的文件

    在 Linux 上合并和排序文本的方法有很多种,但如何去处理它取决于你试图做什么:你是只想将多个文件的内容放入一个文件中,还是以某种方式组织它,让它更易于使用.在本文中,我们将查看一些用于排序和合并文 ...

  5. Linux上的文件类型与默认图标

    引言 也许小伙伴们对 Linux 已经有一定程度的了解,或者已经是一名能够在工作和生活中活用它的 Linux 用户了.随着桌面环境的不断发展,Linux 系统已经不再仅仅是一个面向极客和开发者的操作系 ...

  6. linux文件夹加密忘记密码,如何通过密码保护Linux上的文件夹或目录?

    假设你在Linux主目录下有一个文件夹,你把不希望任何人没有密码就能访问的安全文档文件存储在里面.那样一来,即使有人设法搞到了你的计算机,进而访问主目录,仍有另外一道防线守护着你的私密文件. Cryp ...

  7. linux如何给某个文件加密码,如何通过密码保护Linux上的文件夹或目录?

    假设你在Linux主目录下有一个文件夹,你把不希望任何人没有密码就能访问的安全文档文件存储在里面.那样一来,即使有人设法搞到了你的计算机,进而访问主目录,仍有另外一道防线守护着你的私密文件. Cryp ...

  8. linux将一段时间内文件压缩,在 Linux 上压缩文件的 5 种方法

    在 Linux 上压缩文件的 5 种方法时间:2020-05-07 11:18    浏览次数: 发布者:润天教育    来源:金信润天 0 在 Linux 上有不少用于压缩文件的命令.最新最有效的一 ...

  9. window文件转换到linux,Window和Linux上的文件相互转换

    当前位置:我的异常网» Linux/Unix » Window和Linux上的文件相互转换 Window和Linux上的文件相互转换 www.myexceptions.net  网友分享于:2013- ...

最新文章

  1. 创建多个Oracle数据库及相应的实例
  2. 使用 QEMU 进行系统仿真
  3. 15.4.1 杠杆利用类型参数推断
  4. bzoj3729-Gty的游戏【Splay,博弈论】
  5. 关于无法加载已创建的布局文件的问题的解决方案以及已布局在对应的R文件中未生成相应ID的问题的解决
  6. 混淆矩阵-python
  7. Windows Server 2003群集配置手记(转载)
  8. cmake和make区别
  9. win10字体模糊发虚怎么回事?win10字体模糊发虚电脑问题还是系统问题?
  10. 001_iBase4J学习之环境搭建
  11. UDP编程与Socket
  12. 超能陆战队:迪士尼画风的漫威英雄
  13. 425 Failed to establish connection.
  14. 阿里云DDNS+iKuai 软路由+证书安装
  15. 元器件 - TVS二极管
  16. 罗尔(Rolle)、拉格朗日(Lagrange)和柯西(Cauchy)三大微分中值定理的定义
  17. DRM系列(10)之drm_read
  18. ARMv7中 KVM对虚拟化的实现(中篇)
  19. 58到家多端消息整合之路
  20. 155、交换机如何设置控制IP地址冲突故障

热门文章

  1. 利用FatFs文件系统读取文件最近一次修改日期和时间
  2. 使用汇编语言完成下列C的数组赋值,汇编中的数组分配和指针的实现代码
  3. 线性与非线性规划:混合罚函数方法
  4. 计算机怎么操作文档,iPhone如何操作电脑文件 文件共享功能了解一下
  5. 如何消除视频会议中出现的回音
  6. * 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。java
  7. Python入门之——IPy模块
  8. android 切换语言 广播,Android App 应用内多语言切换
  9. HTML5全球普及加速有望终结iOS与安卓界限
  10. 一种仪控系统黑盒测试系统ETest