文件以文本的ASCII码形式存储在计算机中,通过文件可以将数据持久化,C++中对文件操作要包含头文件fstream,里面包含3个类,分别是ofstrteam(文件写操作),ifstream(文件读操作),fstream(读写操作),如何记住呢,很容易ofstream是output file stream的缩写,表示输出流,这个是针对内存来说的,表示从内存输出到硬盘->当然就是写操作,ifstream就是input file stream的缩写,表示输入流,表示从硬盘输入到内存中,也就是->当然是读操作。我们先来看文件的写操作,代码如下
#include<iostream>
using namespace std;
#include<fstream>
void write()
{
ofstream ofs;//实例化流对象
ofs.open("file.txt",ios::out);//以写的方式打开文件
ofs<<"88"<<endl;//写入数据
ofs.close();//关闭
}
int main()
{
write();
return 0;
}
这里open里面的第一个参数注意下是你的文件路径。文件打开方式包含以下,如图所示自己可以根据情况灵活使用。接下来开始读取数据,同样的步骤,1:实例化流对象,2:以读/写的方式打开 3:写入或者读取数据 4:关闭文件。接下来我们来看第一种方式读取文件
#include<stdio.h>
#include<iostream>
#include<fstream>
using namespace std;
//读文件
int main()
{
ifstream ifs;
string result;
ifs.open("C:/users/14499/desktop/1.txt",ios::in);
while (getline(ifs,result))
{
/* code */
cout<<result<<endl;
}
return 0;
}
使用全局的getline函数,接受2个参数,第一个是输入流对象,第二个是字符串,将输入流对象的每行数据输入到字符串中,有数据返回true,否则返回false。来看第二种方式
#include<stdio.h>
#include<iostream>
#include<fstream>
using namespace std;
//读文件
int main()
{
ifstream ifs;
char result[10] = {};
ifs.open("C:/users/14499/desktop/1.txt",ios::in);
while (ifs.getline(result,sizeof(result)))
{
/* code */
cout<<result<<endl;
}
return 0;
}
这里使用文件的输入流对象的getline函数,将每行的数据的n个字符存到字符数组result中,由于一个字符的字节是1,所以sizeof(result)表示result的字符数。第三种读取方式如下所示
#include<stdio.h>
#include<iostream>
#include<fstream>
using namespace std;
//读文件
int main()
{
ifstream ifs;
char result[10] = {};
ifs.open("C:/users/14499/desktop/1.txt",ios::in);
while (ifs>>result)
{
/* code */
cout<<result<<endl;
}
return 0;
}
这里直接把每行的数据放入result中,注意每行的最后一个一般是'\0',也就是遇到这个字符为假,循环结束。基本c++这3个读取文本文件方式用的最多,自己可以根据自己的情况进行选择
点击此处登录后即可评论