C++文件读取

简介:最近在复习C++在写一个停车场管理系统项目的时候突然遇到了关于文件的处理,感觉忘记的差不多了,重新复习了一下,也顺便写一下笔记,当然在一个文章中有很多细节都没有进行深入的研究,只是知道一些基本的用法。主要感觉在学完数据库后再用文件系统进行数据的存储有一些奇怪,但是为了复习还是选择的再过一遍。

数据类型:

ofstream:该数据类型表示输出文件流,用于创建文件并向文件写入信息。
ifstream:该数据类型表示输入文件流,用于从文件读取信息。
fstream:该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。

打开文件:

open()函数:open() 函数是 fstream、ifstream 和 ofstream 对象的一个成员。

void open(const char *filename, ios::openmode mode);

参数说明:

const char*filename:文件名称实际上是文件的路径

直接路径:c:/c++/c++.txt           适用于任何方式

间接路径:c++.txt                     文件和.cpp文件在同一个文件夹下面

个人的总结:从维护的角度来讲,采用的路径一般是间接路径,反正就是一一般你要使用的文件基本上都和你的源程序在一起,在这种情况下如果我们进行程序的转移的话就不用再去考虑文件位置变化的问题了。

ios::openmode mode:打开文件的方法可以多个进行组合用逻辑或

打开方式:功能描述:
ios::app追加模式。所有写入都追加到文件末尾。
ios::ate文件打开后定位到文件末尾。
ios::in打开文件用于读取。
ios::out打开文件用于写入。
ios::trunc如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0。

实例演示:

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

int main()
{
	fstream file("file.txt");

	if (file.is_open())
	{
		cout << "文件打开成功!" << endl;
	}
	else
	{
		cout << "文件打开失败!" << endl;
	}
	return 0;
}

解释:

fstream默认的是读写的方式打开文件,这是间接的文件打开方式,这种情况是比较简单的,文件和源程序在一起:

 文本文件也可以在源文件的上一层,这个时候要用“.”运算符返回上一层在打开具体的方法可以自行查阅。

is_open()函数:用来检验文件是否打开成功,这个判断在你进行文件的读写操作前是很有意义的,如果文件打开失败了,其他的操作都没什么意义。

文件关闭函数:

void close():    通过对象进行直接调用

写文件:

使用流插入运算符( << )向文件写入信息,就像使用该运算符输出信息到屏幕上一样。唯一不同的是,在这里您使用的是 ofstream 或 fstream 对象,而不是 cout 对象。

读文件:

使用流提取运算符( >> )从文件读取信息,就像使用该运算符从键盘输入信息一样。唯一不同的是,在这里您使用的是 ifstream 或 fstream 对象,而不是 cin 对象。

文件操作流程:

读文件:

1、声明头文件 #include<fstream>

2、实例化对象: ifstream wfile;

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;
		cout << "类容如下:" << endl;
		char buff[1000] = { 0 };
		while (readFile >>buff)
		{
			cout << buff << endl;
		}
	}
	else
	{
		cout << "文件打开失败!" << endl;
	}
return 0;
}

运行结果:

采用“>>”运算符进行读取文件时, 它会将空格作为终止条件,在这种情况下没有办法进行一行一行的输出。

如果输出乱码可以参考:https://jingyan.baidu.com/article/ff42efa9e04733c19e2202f4.html

TXT文件默认的是UTF-8编码格式,我们要将其改为ANSI编码格式,这个具体原因我也不知道。

写文件:

1、声明头文件 #include<fstream>

2、实例化对象:fstream rwfile;  ofstream rfile; 

3、文件打开方式:file.open("文件的路径",打开方式)

4、进行文件操作

5、关闭文件

区别:写文件是不需要判断文件是否打开成功的,因为在写文件时如果文件不存在,程序会自动创建一个文件。

代码部分:

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

int main()
{
	ofstream writeFile;
	writeFile.open("wirtefile.txt", ios::out);

	string name = "高尔基";
	string speaking = "书籍是人类进步的阶梯";

	writeFile << name << " " << speaking;

	writeFile.close();

	return 0;
}

输出部分:

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彼岸丶403

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值