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

这篇具有很好参考价值的文章主要介绍了C++文件读取的四种情况。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介:C++我们可以更具不同的目的来选取文件的读取方式,这里我会介绍C++中的四种文件读取方式。

C++文件读取的一般步骤:

1、包含头文件 #include<fstream>

2、实例化对象:istream file

3、打开文件:file.open("文件路径","打开方式"),打开文件后判断文件是否打开成功,file.is_open()返回一个bool类型,成功:true  失败:false

4、进行文件读取操作

5、关闭文件

文件读取方法:

第一种方法:采用“<<”运算符

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

int main()
{
	ifstream readFile;
	readFile.open("file.txt", ios::in);

	if (readFile.is_open())
	{
		cout << "文件打开成功!" << endl;
		char buff[1000] = { 0 };
		while (readFile >>buff)
		{
			cout << buff << endl;
		}
	}
	else
	{
		cout << "文件打开失败!" << endl;
	}

	readFile.close();


	return 0;
}

解释:这种方式和采用cin>>进行写入类型,readFile>>buff进行写入时永远是从buff[0]开始,不会进行追加式的写入,readFile在遇到EOF(End Of File)时会返回False,以此来跳出while循环。

局限性:由于“<<”运算符自身的性质,会将一切空格当作终止条件,这样的话就无法输出空格信息,采用这种方法会将一行信息进行分段读出,对于类对象的信息读取是很有用的。

结果演示:

文件内容:

苏轼 长恨此身非我有

李白 人生得意需尽欢

曹松 一将功成万骨枯

输出结果:

苏轼

长恨此身非我有

李白

人生得意需尽欢

曹松

一将功成万骨枯     

 第二种方法:利用<string>中的getline函数,按行读取,这样每一行内的所有空格也可以顺利读取

代码部分:

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

int main()
{
	ifstream readFile;
	readFile.open("file.txt", ios::in);

	if (readFile.is_open())
	{
		cout << "文件打开成功!" << endl;
		cout << "类容如下!" << endl;
		string str;
		while (getline(readFile,str))
		{
			cout << str << endl;
		}
	}
	else
	{
		cout << "文件打开失败!" << endl;
	}
    readFile.close();
  
	return 0;
}

解释:getline()函数会在文件读完时返回False跳出while循环,适用于想一次性的读取一行文件,保持读出内容和文件内容一致。

 输出结果:

苏轼 长恨此身非我有

李白 人生得意需尽欢

曹松 一将功成万骨枯

第三种方法: 利用readFile对象内部的getline方法,这个名字虽然和第二种中的一样,但是传入的参数不同,并不是同一个函数。

代码部分:

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

int main()
{
	ifstream readFile;
	readFile.open("file.txt", ios::in);


	if (readFile.is_open())
	{
		cout << "文件打开成功!" << endl;
		char buff[1000] = { 0 };
		while (readFile.getline(buff,sizeof(buff)))
	    {
		    cout << buff << endl;
        }
		
	}
	else
	{
		cout << "文件打开失败!" << endl;
	}



	readFile.close();
	return 0;
}

输出结果:

苏轼 长恨此身非我有

李白 人生得意需尽欢

曹松 一将功成万骨枯

 第四种方法:利用radeFile内部的get()函数一个个的将字符读出来,遇到EOF时返回False退出while循环,这个过程会读取"endl",也就是换行字符,在读到换行字符时会进行换行操作。

代码部分:

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

int main()
{
	ifstream readFile;
	readFile.open("file.txt", ios::in);
	
	if (readFile.is_open())
	{
		cout << "文件打开成功!" << endl;
		char buff = 0;
		while ((buff=readFile.get())!=EOF)
		{
			cout << buff;
		}
	}
	else
	{
		cout << "文件打开失败!" << endl;
	}
	readFile.close();
	return 0;
}

输出部分:

苏轼 长恨此身非我有

李白 人生得意需尽欢

曹松 一将功成万骨枯

 总结:第一种方法虽然有无法读取空格的缺陷,但是在我们对类对象进行初始化时是很有帮助的;第二、三两种就是不同的函数重载,在I/O输入这一部分有详细的介绍,分别对应的是string库和iostream库;第四种也是I/O流中的用法。文章来源地址https://www.toymoban.com/news/detail-454843.html

到了这里,关于C++文件读取的四种情况的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++干货铺】C++中的四种类型转换

    ========================================================================= 个人主页点击直达:小白不是程序员 C++系列专栏:C++干货铺 代码仓库:Gitee ========================================================================= 目录 C语言中的类型转换 为什么C++需要四种类型转化 C++强制类型转换 static_cast reinter

    2024年01月25日
    浏览(45)
  • Linux 文件探秘:检查Linux系统的文件大小的四种神器

    博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接 : 🔗 精选专栏 : 《面试题大全》 — 面试准备的宝典! 《IDEA开发秘籍》 — 提升你的IDEA技能! 《100天精通鸿蒙》 — 从Web/安卓到鸿蒙大师! 《100天精通Golang(基础入门篇)》 — 踏入

    2024年03月15日
    浏览(43)
  • [linux]两台Linux服务器之间传输文件的四种方法

    在日常服务器租用中,有时需要将文件从一台服务器传到另一台服务器,下面给大家介绍四种linux服务器之间传输文件方式。 【优点】简单方便,安全可靠;支持限速参数 【缺点】不支持排除目录 【用法】 scp就是secure copy,是用来进行远程文件拷贝的。数据传输使用 ssh,并

    2024年04月12日
    浏览(48)
  • 最长上升子序列问题(LIS问题)与最长不上升子序列问题的四种方法(c++ 模板代码)

    最大上升子序列问题也叫做LIS问题,与最大公共子序列LCS问题是一类经典问题,在本章我们将总结一下求解 LIS最大上升子序列 的 几种方法 ,同时也会给出对应的 最大不上升子序列的求解方法。 关于LCS问题,我在后面会再出一篇博客来讲解, 废话不多说,我们直接进入正题

    2024年02月03日
    浏览(43)
  • 由于找不到msvcp140.dll文件,我们要怎么解决这种情况?

    在使用电脑的过程中,我们经常会遇到各种各样的问题,其中之一就是缺少msvcp140.dll文件。这个问题通常会导致某些软件无法正常运行,而且很多人对于如何解决这个问题并不是很清楚。本文将会介绍多种修复方法,并对比哪种方法比较方便。 一.什么是msvcp140.dll msvcp140.dll是

    2024年02月10日
    浏览(53)
  • ML:机器学习中有监督学习算法的四种最基础模型的简介(基于概率的模型、线性模型、树模型-树类模型、神经网络模型)、【线性模型/非线性模型、树类模型/基于样本距离的模型】多种对比(假设/特点/决策形式等

    ML:机器学习中有监督学习算法的四种最基础模型的简介(基于概率的模型、线性模型、树模型-树类模型、神经网络模型)、【线性模型/非线性模型、树类模型/基于样本距离的模型】多种对比(假设/特点/决策形式等) 目录

    2024年02月09日
    浏览(58)
  • cv::Mat的四种复制操作和cv::Mat作为函数形参的四种形式

    1、通过讲解cv::Mat类的深拷贝和浅拷贝来说明cv::Mat的四种复制操作 2、当cv::Mat作为函数形参时: cv::Mat temp 、 const cv::Mat temp 、 cv::Mat temp 、 const cv::Mat temp 这四种形参有什么区别?函数内部对Mat类形参数据的改变是否会影响到外面的Mat类实参数据? OpenCV2,数据结构Mat主要包含

    2024年02月10日
    浏览(61)
  • JAVA 的四种访问权限

    在Java编程中,访问权限是非常重要的概念,因为它可以保证代码的安全性和封装性。访问权限有四种,分别是public、protected、default和private。 private :如果一个类的方法或者变量被 private 修饰,那么这个类的方法或者变量只能在该类本身中被访问,在类外以及其他类中都不能

    2024年02月09日
    浏览(48)
  • View 的四种 OnClick 方式

    嗨喽,大家好!今天呢,我跟大家聊一聊Android 的View 的点击事件onClick 。额,有点拗口(^_^) 。 看过我的文章的人可能会好奇,你怎么写Android的文章了啊?说起这啊,就是我的血泪史了,此处省略一万字.................... 废话不多说,让我们代码走起,风里来,雨里去,唯有代

    2023年04月15日
    浏览(42)
  • java的四种访问权限

    1、public: 所修饰的类、变量、方法,在内外包均具有访问权限,Public (公有) 访问权限较为宽松的一种,不仅可以被跨类访问,而且可以跨包访问。 2、protected: 这种权限是为继承而设计的,protected所修饰的成员,对所有子类是可访问的,但只对同包的类是可访问的,对外

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包