C++学习笔记七——使用ofstream ifstream进行简单得读写txt文件

C++的输入输出由标准库提供,标准库定义了一族类型,支持对文件和控制窗口的等设备的读写(IO)。还定义了其他一些类型,使得string 对象能够像文件一样操作,从而使我们无需IO就能实现字符之间的转换。

istream //输入流类型,提供输入操作
ifstream //由istream派生而来,提供读文件功能
ostream //输出流类型,提供输出操作
ofstream //由ostream 派生而来,提供写文件功能
>>  //用于从istream对象中读入输入
<<  //用于把输出写到ostream

IO类型在三个独立头文件定义:
iostream 定义读写控制窗口类型
fstream 定义读写已命名文件类型
sstream 所定义的类型用于读写储存在内存中的string 对象

应用以下的例子来说明用法,以下例程均包含头文件

include <fstream>

下面的例程简单的创建并读写文件

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

int main()
{
    
    
	string c;//存文档的字符串
	ofstream out("D:\\转换\\1.txt");// 使用一个默认初始化的方式,等价于 ofstream out; out.open("D:\\转换\\1.txt");
	//其中打开文件的方式在ios类中定义,有以下的几种方式
	//ios::in 为输入而打开文件
	//ios::output 为输出而打开文件
	//ios::app 保留文件原有的内容
	//ios::tunc 如果文件已存在则先删除该文件
	//以上方式能够通过(“|”)使用
	out << "this is a output file test" << endl;
	//值得注意的是如果文件夹中没有txt则会自己创建
	//如果想在文件中输入时不覆盖原有的内容,则需要ios::app
	ofstream output1("D:\\转换\\1.txt", ios::app);
	output1 << "is not cover" << endl;//将内容输出到文件内
	output1.close();
	//关闭
	vector<string> memory;
	ifstream read;//从文件中读取相关文件,并存储到vector中
	read.open("D:\\转换\\1.txt");
	while (read >> c)
	{
    
     
		memory.push_back(c);
	}
	for (vector<string> ::size_type flag = 0; flag != memory.size(); flag++)
	{
    
    
		cout << "the final result "<< memory[flag] << endl;
	}

	return 0;
}

结果运行如下:

在这里插入图片描述

在这里插入图片描述

以上对程序上面几个点进行总结
1.<< 与 >>操作符的使用,上文已经有所提及,我个人有一个简单理解,以“ << ”为例 箭头方向在左,”流“的方向就是箭头的方向,从而理解 out << “this is a output file test” << endl; 就是将“this is a output file test ” 传给out 文件
2.读取文件的过程中,将txt文件中的内容输出到字符c时,用到read.eof(),
eof() 表示如果读到文件末尾就返回true.其他功能的成员还有以下几个
bad()
如果在读写过程中出错则返回 true
fail()
除了与bad() 同样的情况下会返回 true 以外,加上格式错误时也返回true ,例如当想要读入一个整数,而获得了一个字母的时候。
good()
这是最通用的:如果调用以上任何一个函数返回true 的话,此函数返回 false 。

3.
在遍历vector时,采用了size_type,这种类型在我以前的文章有提到。为了防止越界

猜你喜欢

转载自blog.csdn.net/qq_41803340/article/details/108784611