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++文件读取的四种方式相关推荐

  1. C++ 创建文件夹的四种方式

    在开头不得不吐槽一下,我要的是简单明了的创建文件夹的方式,看得那些文章给的都是复杂吧唧的一大坨代码,不仔细看鬼知道写的是啥.因此,为了方便以后自己阅读,这里自己写一下 C++ 创建文件夹的四种方式: ...

  2. Java实现文件复制的四种方式

    背景:有很多的Java初学者对于文件复制的操作总是搞不懂,下面我将用4中方式实现指定文件的复制. 实现方式一:使用FileInputStream/FileOutputStream字节流进行文件的复制操 ...

  3. java 读取css文件_java文件读取的两种方式

    JAVA中读取文件(二进制,字符)内容的几种方 JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代 ...

  4. C++文件读取的四种情况

    简介:C++我们可以更具不同的目的来选取文件的读取方式,这里我会介绍C++中的四种文件读取方式. C++文件读取的一般步骤: 1.包含头文件 #include<fstream> 2.实例化 ...

  5. Python 文件读取的4种方式

    python读文件的4种方式 1.直接打开就读 with open('filepath','r') as f:for line in f:print(line)print('一行数据') 虽然f是一个 ...

  6. Linux清理文件内容的四种方式

    原文:https://www.cnblogs.com/zqifa/p/linux-vim-4.html linux系统中清空文件内容的三种方法1.使用vi/vim命令打开文件后,输入"%d& ...

  7. Qt中文件读取的几种方式

    1.直接用文件的按时读取,读取之后写在一个QString里面 QByteArray ba=file.read(file.bytesAvailable()); QString text=QString( ...

  8. python 文件读取的几种方式 read readline readlines

    1. read(): 一次性读取文件全部内容,适合小文件.举例如下: with open('123.txt', 'r') as f:print(f.read(), end='') # end=''用来 ...

  9. Excel文件读取的两种方式

    1.Pandas库的读取操作 from pandas import read_excel dr=read_excel(filename,header) dr#dataframe数据 dw=DataFr ...

最新文章

  1. Facebook最新对抗学习研究:无需「平行语料库」完成「无监督」机器翻译
  2. file is too short to be an sstable [[Node: save/RestoreV2 = RestoreV2[dtypes=[DT_FLOAT, DT_FLOAT, DT
  3. 介绍几本专业的书籍,一起学习
  4. [转载]ASP.NET开发经验积累
  5. oracle between and monday,oracle——时间
  6. Sublime Text 3 配置和使用方法
  7. Go语言Web框架gwk介绍 (四)
  8. win10游戏版如何安装 Windows10安装游戏版的步骤方法
  9. 两个常见小故障的修复
  10. 解决WindowsBuilder不能打开别人代码的design窗口(不显示Source 和 Design)
  11. Mac新手必备技巧之如何关闭Mac屏幕亮度自动调节功能
  12. Python print() 函数,在同一行打印
  13. linux学习第八周总结
  14. 会议OA项目之我的会议(会议排座送审)
  15. 词云图制作:15张炫酷的词云图海报、PPT报告词云图、3D词云图,MagicCloud词云图一键制作软件
  16. FTP上传成功之后却查找不到文件
  17. 数据流图业务流程图之间的区别
  18. 转型AI ,80后华为Java工程师的故事
  19. Word里的标尺怎么用?这五个Word标尺的妙用赶紧收藏
  20. 西行漫记(12):对象,结束与开始

热门文章

  1. python实现mysql二叉树_python环境下使用mysql数据及数据结构和二叉树算法(图)...
  2. VR全景拍摄怎么设置相机
  3. C/C++植物大战僵尸之CE找基址+修改器制作(基础版)
  4. (分子优化BenchMark)Sample Efficiency Matters: A Benchmark for Practical Molecular Optimization(PMO)
  5. 数据库表的映射与java类映射处理
  6. Android消息传递机制总结
  7. c++头文件iomanip.h中setw()、setprecision()、setbase用法示例详解
  8. 怎么做app开发?如何去开发适合自己企业的APP应用
  9. 电蚊香长时间通电引发的86离线语音智能盒子的设计开发
  10. keycloak 验证 token