C++文件读取的四种方式
C++可以根据不同的目的来选取文件的读取方式,目前为止学习了C++中的四种文件读取方式。
C++文件读取的一般步骤:
1、包含头文件 #include<fstream>
2、创建流对象:ifstream ifs(这里的ifs是自己起的流对象名字)
3、打开文件:file.open("文件路径","打开方式"),打开文件后并判断文件是否打开成功,ifs.is_open()是用于判断文件是否打开的语句
4、进行文件读取操作
5、关闭文件
ifs.close();
第一种方法:采用“<<”运算符
#include<iostream>
#include<fstream>
using namespace std;int main()
{// 创建流对象
ifstream ifs;//打开文件并判断是否打开成功如果成功则读取数据readFile.open("test.txt", ios::in);if (ifs.is_open()){cout << "文件打开成功" << endl;//第一种方法char buf[100] = { 0 };while (ifs >>buf){cout << buf << endl;}}else{cout << "文件打开失败" << endl;}//关闭文件ifs.close();return 0;
}
或者可以写成以下,将判断是否成功打开文件换一种方式实现读取数据
#include<iostream>
#include<fstream>
using namespace std;void test01()
{// 2创建流文件ifstream ifs;// 3打开文件并判断是否打开成功ifs.open("test.txt", ios::in);if (!ifs.is_open()){cout << "打开失败" << endl;}//读数据第一种方法char buff[1024] = {0};while (ifs >> buf){cout << buf << endl;}
解释:这种方式和采用cin>>进行写入类型,ifs>>buf进行写入时永远是从buff[0]开始,不会进行追加式的写入,ifs在遇到EOF(End Of File)时会返回False,以此来跳出while循环。
局限性:由于“<<”运算符自身的性质,会将一切空格当作终止条件,这样的话就无法输出空格信息,采用这种方法会将一行信息进行分段读出,对于类对象的信息读取是很有用的
第二种方法:利用<string>中的getline函数,按行读取,这样每一行内的所有空格也可以顺利读取
#include<iostream>
#include<fstream>
#include<string>
using namespace std;int main()
{ifstream ifs;ifs.open("test.txt", ios::in);if (readFile.is_open()){cout << "文件打开成功" << endl;string buf;while (getline(ifs,buf)){cout << buf << endl;}}else{cout << "文件打开失败" << endl;}//关闭文件 ifs.close();return 0;
}
同样,也有两种方式
#include<iostream>
#include<fstream>
using namespace std;void test01()
{// 2创建流文件ifstream ifs;// 3打开文件并判断是否打开成功ifs.open("test.txt", ios::in);if (!ifs.is_open()){cout << "打开失败" << endl;}//第二种string buf;while(getline(ifs,buf)){cout << buf << endl;}//5 关闭文件ifs.close();
}
getline()函数会在文件读完时返回False跳出while循环,getline可以一次读取一行文件,保持读出内容和文件内容一致。
第三种方法: 利用ifs流对象内部的getline方法,这个名字虽然和第二种中的一样,但是传入的参数不同,并不是同一个函数
#include<iostream>
#include<fstream>
#include<string>
using namespace std;int main()
{
//创建流对象
ifstream ifs;readFile.open("test.txt", ios::in);//判断文件是否成功打开成功则读取数据if (ifs.is_open()){cout << "文件打开成功" << endl;char buf[100] = { 0 };while (ifs.getline(buf,sizeof(buf))){cout << buf << endl;}}else{cout << "文件打开失败" << endl;}//关闭文件ifs.close();return 0;
}
#include<iostream>
#include<fstream>
using namespace std;void test01()
{// 2创建流文件ifstream ifs;// 3打开文件并判断是否打开成功ifs.open("test.txt", ios::in);if (!ifs.is_open()){cout << "打开失败" << endl;}//读取数据的第三种方法char buf[100] = { 0 };while (ifs.getline(buf, sizeof(buf))){cout << buf << endl;}//5 关闭文件ifs.close();
}
第四种方法:利用ifs内部的get()函数一个个的将字符读出来,遇到EOF时返回False退出while循环,EOF 是 end of file的标志,不太建议使用这个,因为这个很慢,只能一个一个字符读取
#include<iostream>
#include<fstream>
using namespace std;int main()
{//创建流对象ifstream ifs;ifs.open("test.txt", ios::in);//判断是否成功打开如果打开则读取数据if (ifs.is_open()){cout << "文件打开成功" << endl;char buf = 0;while ((buf=ifs.get())!=EOF){cout << buf;}}else{cout << "文件打开失败" << endl;}
//关闭文件
ifs.close();return 0;
}
#include<iostream>
#include<fstream>
using namespace std;void test01()
{// 2创建流文件ifstream ifs;// 3打开文件并判断是否打开成功ifs.open("text.txt", ios::in);if (!ifs.is_open()){cout << "打开失败" << endl;}// 第四种读取方法char c;while(((c = ifs.get()) != EOF)){cout << c;}//5 关闭文件ifs.close();
}
C++文件读取的四种方式相关推荐
- C++ 创建文件夹的四种方式
在开头不得不吐槽一下,我要的是简单明了的创建文件夹的方式,看得那些文章给的都是复杂吧唧的一大坨代码,不仔细看鬼知道写的是啥.因此,为了方便以后自己阅读,这里自己写一下 C++ 创建文件夹的四种方式: ...
- Java实现文件复制的四种方式
背景:有很多的Java初学者对于文件复制的操作总是搞不懂,下面我将用4中方式实现指定文件的复制. 实现方式一:使用FileInputStream/FileOutputStream字节流进行文件的复制操 ...
- java 读取css文件_java文件读取的两种方式
JAVA中读取文件(二进制,字符)内容的几种方 JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代 ...
- C++文件读取的四种情况
简介:C++我们可以更具不同的目的来选取文件的读取方式,这里我会介绍C++中的四种文件读取方式. C++文件读取的一般步骤: 1.包含头文件 #include<fstream> 2.实例化 ...
- Python 文件读取的4种方式
python读文件的4种方式 1.直接打开就读 with open('filepath','r') as f:for line in f:print(line)print('一行数据') 虽然f是一个 ...
- Linux清理文件内容的四种方式
原文:https://www.cnblogs.com/zqifa/p/linux-vim-4.html linux系统中清空文件内容的三种方法1.使用vi/vim命令打开文件后,输入"%d& ...
- Qt中文件读取的几种方式
1.直接用文件的按时读取,读取之后写在一个QString里面 QByteArray ba=file.read(file.bytesAvailable()); QString text=QString( ...
- python 文件读取的几种方式 read readline readlines
1. read(): 一次性读取文件全部内容,适合小文件.举例如下: with open('123.txt', 'r') as f:print(f.read(), end='') # end=''用来 ...
- Excel文件读取的两种方式
1.Pandas库的读取操作 from pandas import read_excel dr=read_excel(filename,header) dr#dataframe数据 dw=DataFr ...
最新文章
- Facebook最新对抗学习研究:无需「平行语料库」完成「无监督」机器翻译
- file is too short to be an sstable [[Node: save/RestoreV2 = RestoreV2[dtypes=[DT_FLOAT, DT_FLOAT, DT
- 介绍几本专业的书籍,一起学习
- [转载]ASP.NET开发经验积累
- oracle between and monday,oracle——时间
- Sublime Text 3 配置和使用方法
- Go语言Web框架gwk介绍 (四)
- win10游戏版如何安装 Windows10安装游戏版的步骤方法
- 两个常见小故障的修复
- 解决WindowsBuilder不能打开别人代码的design窗口(不显示Source 和 Design)
- Mac新手必备技巧之如何关闭Mac屏幕亮度自动调节功能
- Python print() 函数,在同一行打印
- linux学习第八周总结
- 会议OA项目之我的会议(会议排座送审)
- 词云图制作:15张炫酷的词云图海报、PPT报告词云图、3D词云图,MagicCloud词云图一键制作软件
- FTP上传成功之后却查找不到文件
- 数据流图业务流程图之间的区别
- 转型AI ,80后华为Java工程师的故事
- Word里的标尺怎么用?这五个Word标尺的妙用赶紧收藏
- 西行漫记(12):对象,结束与开始
热门文章
- python实现mysql二叉树_python环境下使用mysql数据及数据结构和二叉树算法(图)...
- VR全景拍摄怎么设置相机
- C/C++植物大战僵尸之CE找基址+修改器制作(基础版)
- (分子优化BenchMark)Sample Efficiency Matters: A Benchmark for Practical Molecular Optimization(PMO)
- 数据库表的映射与java类映射处理
- Android消息传递机制总结
- c++头文件iomanip.h中setw()、setprecision()、setbase用法示例详解
- 怎么做app开发?如何去开发适合自己企业的APP应用
- 电蚊香长时间通电引发的86离线语音智能盒子的设计开发
- keycloak 验证 token