C++ 文件操作-文本文件-读取和打开文件方法详解

读文件步骤

#include <iostream>
using namespace std;
#include <fstream>
#include <string>
//文本文件 读文件void test(){// 1 包含头文件// 2 创建流对象ifstream ifs;// 3 打开文件 并且判断是否打开成功ifs.open("table.txt",ios::in); //文件名+打开方式//判断if (!ifs.is_open()) {cout << "文件打开失败" << endl;return; //如果打开文件失败,就不再往下进行}// 4 读数据 4种方式,推荐前三种/*     //方式一char buf[1024] = {0}; //创建一个字符数组,全部初始化为0,用以保存读到的文件数据//table.txt只有三行数据,用while循环,将ifs中的数据通过右移运算符 >> 放到buf中while (ifs >> buf) {   //当数据一行一行全部读到手即退出循环cout << buf << endl; //查看数据是否一行一行读进去。} *//*     //方式二char buf[1024] = {0};//利用ifs里面的成员函数getline(获取一行)  while(ifs.getline(buf,sizeof(buf))){//getline 第一个参数为存放数据的地址,第二个参数为最多需要读取多少字节数,此处我们准备1024个字节空间cout << buf << endl;} *//*     //方式三string buf;//将数据存放到c++ 中的字符串中while (getline(ifs,buf)) //使用全局的getline()函数,其里面第一个参数代表输入流对象,第一个参数代表准备好的字符串,每次读取一行内容到buf{cout << buf << endl;} *///方式四,逐个字符读效率低,不推荐使用char c; //逐个字符的读取,放入c中while ((c = ifs.get())!= EOF)   //get()函数通过循环每次就读一个字符,并将读到的字符放到c中,最后判断是否读到文件尾EOF(end of file),如果没有继续读,读到则退出。{cout<< c;}// 5 关闭文件ifs.close();
}int main(){test();return 0;
}

补充

ifstream类的对象创建成功的时候会返回非空值,借此判断是否创建文件对象成功

写法一:#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main() {//   const string table = "table1.txt"; //open filed//   可执行程序目录下没有此文件const string table = "table.txt";//打开文件方式一://   ifstream ifs(table);//利用构造函数打开文件,打开模式默认ios::in//打开文件方式二:ifstream ifs;             //先创建流对象,不先绑定文件ifs.open(table, ios::in); //通过流对象中的open()函数打开文件 文件名称+打开模式if (!ifs) {               //判断打开文件是否成功cout << "open filed" << endl;} else {string buf; //创建字符串存取读到的数据while (getline(ifs, buf)) {cout << buf << endl; //一行一行读取到buf中,遇到空格会跳跃}ifs.close(); //读取完毕关闭文件}return 0;
}
写法二:#include <iostream>
#include <fstream> // 包含fstream头文件
using namespace std;int main() {
//读文件时 定义流对象,也可以通过构造函数打开文件,打开模式默认ios::inifstream file("table.txt"); // 打开名为"table.txt"的文本文件 文件名可以相对也可以绝对//判断是否打开文件写法另一种写法  if(!file){cout<<"open fail"<<endl;}if (file) { // 如果成功打开了文件string line;while(getline(file, line)) { // 逐行读取文件内容并存入字符串变量line中cout << line << endl; // 输出每一行内容到控制台}file.close(); // 关闭文件} else {cerr << "无法打开文件!" << endl; // 若无法打开文件则输出错误信息}return 0;
}

打开文件方式补充说明 1

打开文件的放法:

打开文件方式补充说明 2

//打开文件
#include <iostream>
#include <fstream>
using namespace std;
int main()
{ifstream inFile;          //流类ifstream 建立读取数据的文件流对象inFile.open("c:\\tmp\\test.txt", ios::in);   //调用流对象的 open 成员函数打开准备读取的
//文件。参数是文件名和打开模式                   if (inFile)  //判断流对象名的表达式,若果为真true,条件成立,则说明文件打开成功inFile.close();   //关闭文件时,调用文件流对象的 close 成员函数即可。 elsecout << "test.txt doesn't exist" << endl;ofstream oFile;       //流类ofstream  建立写入数据的文件流对象oFile.open("test1.txt", ios::out);      //调用流对象的 open 成员函数打开准备写入数据的文
//件。参数是文件名和打开模式                   if (!oFile)  //判断流对象名的表达式,条件成立(PS:注意此处是!非),则说明文件打开出错cout << "error 1" << endl;elseoFile.close();  //关闭文件时,调用文件流对象的 close 成员函数即可。oFile.open("tmp\\test2.txt", ios::out | ios::in);  //第二个参数打开模式是  打开已存在的
//文件,既可读取其内容,也可向其写入数据。文件刚打开时,原有内容保持不变。如果文件不存在,则打开
//出错。if (oFile)  //条件成立,则说明文件打开成功oFile.close();elsecout << "error 2" << endl;fstream ioFile;    //流类fstreamioFile.open("..\\test3.txt", ios::out | ios::in | ios::trunc);//第二参数打开模式是   打
//开文件,既可读取其内容,也可向其写入数据。如果文件本来就存在,则打开时清除原来的内容;如果文件
//不存在,则新建该文件。if (!ioFile)cout << "error 3" << endl;elseioFile.close();return 0;
}

读取ini类型配置文件

C++读取配置文件的基本步骤如下:

  1. 使用标准库中的fstream头文件打开配置文件;

  2. 逐行读取文件内容,根据具体需求解析每一行数据;

  3. 关闭文件。

以下是一个简单的示例代码:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{// 打开配置文件ifstream config_file("config.txt");if (!config_file.is_open()){cerr << "Failed to open config file." << endl;return -1;}// 逐行读取并解析数据string line;while (getline(config_file, line)){// 如果是注释或空行,则忽略if (line.empty() || line[0] == '#')continue;// 解析key-value对size_t pos = line.find('=');if (pos != string::npos){string key = line.substr(0, pos);string value = line.substr(pos + 1);cout << "Key: " << key << ", Value: " << value << endl;}}// 关闭文件config_file.close();return 0;
}

在这个示例中,我们假设配置文件中的每一行都是形如“key=value”的格式,程序会读取并输出每一对键值对。其中,“#”开头的行视为注释或空行,会被忽略。

本文仅为学习回顾,对基础代码做记录。

参考:62 C++文件操作-文本文件-读文件_哔哩哔哩_bilibili 

c++:文件操作1 文件的打开_c++打开文件-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/485191.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【自然语言处理】:实验5,司法阅读理解

清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 代码和报告均为本人自己实现&#xff08;实验满分&#xff09;&#xff0c;只展示主要任务实验结果&#xff0c;如果需要详细的实验报告或者代码可以私聊博主 有任何疑问或者问题&#xff0c;也欢…

通俗易懂分析:Vite和Webpack的区别

1、对项目构建的理解 先从浏览器出发&#xff0c; 浏览器是由浏览器内核和JS引擎组成&#xff1b;浏览器内核编译解析html代码和css代码&#xff0c;js引擎编译解析JavaScript代码&#xff1b;所以从本质上&#xff0c;浏览器只能识别运行JavaScript、CSS、HTML代码。 而我们在…

Vue事件处理之v-on

1. 使用及定义 定义方法 function 方法名称(接受的event或是什么都不写) {//不管方法后括号内写与不写event,都可以接受到方法内表达式 }//定义一个接受参数的方法,此时也会在传入event function 方法名称(传入参数) {//可接受传入参数与event方法内表达式 } //定义一个接受参…

代码随想录算法刷题训练营day22

代码随想录算法刷题训练营day22&#xff1a;LeetCode(236)二叉树的最近公共祖先、LeetCode(235) 二叉搜索树的最近公共祖先、LeetCode(701)二叉搜索树中的插入操作、LeetCode(450)删除二叉搜索树中的节点 LeetCode(236)二叉树的最近公共祖先 题目 代码 /*** Definition for…

用例图:软件设计之旅的蓝图

用例图&#xff1a;软件设计之旅的蓝图 今天我们将探讨一个对于软件开发至关重要的主题——用例图。在软件开发过程中&#xff0c;用例图是一种静态结构图&#xff0c;用于描述系统的功能需求。它展示了参与者&#xff08;Actors&#xff09;如何与系统进行交互&#xff0c;以…

MyBatis进阶

目录 一、实现多表查询 二、#{}和${} 1、#{}和${}的使用 2、#{}和${}的区别 3、${}的使用场景 三、数据库连接池 1、数据库连接池概念 2、常见数据库连接池 3、修改连接池为Hikari 四、动态sql语句--xml 1、if标签 2、tirm标签 3、where标签 4、set标签 5、fore…

IT资讯——全速推进“AI+鸿蒙”战略布局!

文章目录 每日一句正能量前言坚持长期研发投入全速推进“AI鸿蒙”战略 人才战略新章落地持续加码核心技术生态建设 后记 每日一句正能量 人总要咽下一些委屈&#xff0c;然后一字不提的擦干眼泪往前走&#xff0c;没有人能像白纸一样没有故事&#xff0c;成长的代价就是失去原来…

【Qt学习】QLineEdit 控件 属性与实例(登录界面,验证密码,正则表达式)

文章目录 1. 介绍2. 实例使用2.1 登录界面2.2 对比两次密码是否相同2.3 通过按钮显示当前输入的密码&#xff08;并对2.2进行优化&#xff09;2.4 结语 3. 正则表达式3.1 QRegExp3.2 验证输入内容 4. 资源代码 1. 介绍 关于 QLineEdit 的详细介绍&#xff0c;可以去查阅官方文…

第2.1章 StarRocks表设计——概述

注&#xff1a;本篇文章阐述的是StarRocks-3.2版本的表设计相关内容。 建表是使用StarRocks非常重要的一环&#xff0c;规范化的表设计在某些场景下能使查询性能有数倍的提升。StarRocks的表设计涉及到的知识点主要包括数据表类型、数据分布&#xff08;分区分桶及排序键&#…

阿里云SSL免费证书到期自动申请部署程序

阿里云的免费证书只有3个月的有效期&#xff0c;不注意就过期了&#xff0c;还要手动申请然后部署&#xff0c;很是麻烦&#xff0c;于是写了这个小工具。上班期间抽空写的&#xff0c;没有仔细测试&#xff0c;可能存在一些问题&#xff0c;大家可以自己clone代码改改&#xf…

React基础-webpack+creact-react-app创建项目

学习视频&#xff1a;学习视频 2节&#xff1a;webpack工程化创建项目 2.1.webpack工程化工具&#xff1a;vite/rollup/turbopak; 实现组件的合并、压缩、打包等&#xff1b; 代码编译、兼容、校验等&#xff1b; 2.2.React工程化/组件开发 我们可以基于webpack自己去搭建…

短剧小程序开发,重塑视频观看体验的科技革命

随着科技的飞速发展&#xff0c;人们的娱乐方式也在不断变化。短剧小程序作为新兴的数字娱乐形式&#xff0c;以其独特的魅力和巨大的市场潜力&#xff0c;正逐渐成为科技与娱乐结合的代表。本文将探讨短剧小程序的发展背景、优势特点、开发流程以及未来展望。 一、短剧小程序…