2.C++文件操作----读取数据

112 阅读2分钟

1.读数据的头文件

#include<iostream>
#include<fstream>  //ifstream类包含的头文件
#include<string>    //getline()函数需要包含的头文件
using namespace std;

2.读数据的流程

创建输入流对象ifstream;
利用输入流对象打开文件,参数为文件路径和打开模式ios::in;
判断是否可以打开文件,如果打开文件失败,终止程序,否则继续;
从输入流对象按行读取数据,并存放起来;
读取数据完毕,关闭文件。

3. 读数据的三种方式

#include<iostream>
#include<fstream>  //ifstream类包含的头文件
#include<string>    //getline()函数需要包含的头文件
using namespace std;
int main(void)
{
	//一般是选用全路径
	string filepath = "C:\\Users\\10307\\Desktop\\text\\test.txt";
	//输入流打开文件模式  ios::in
	//创建文件输入流对象,打开文件,如果文件不存在,则打开文件失败

	//ifstream fin(filepath);    //创建输入流对象,并打开文件
	//ifstream fin(filepath, ios::in);  //创建输入流对象,并打开文件

	//创建输入流对象
	ifstream fin;
	//打开文件
	fin.open(filepath, ios::in);

	//判断打开文件是否成功
	//失败的原因主要有:目录不存在;文件不存在;没有权限,Linux平台下很常见
	if (fin.is_open() == false)
	{
		cout << "打开文件" << filepath << "失败。\n";
		return 0;
	}

	//读取文件的第一种方式
	string buffer;//用于存放从文件中读取的内容
	//读取文件内容的代码
	//文本文件一般以行的方式组织数据
	////从输入流中按行读取数据,存放在buffer中,如果文件结束,getLine()就会返回空
	/*while (getline(fin, buffer))
	{
		cout << buffer << endl;
	}*/

	cout << "读取文件的第二种方式" << endl;
	//读取文件的第二种方式
	char buffer1[101]; //C风格字符串,存放从文件中读取的内容
	//注意:如果采用ifstream.getlint(),一定要保证缓冲区足够大
	while (fin.getline(buffer1, 100))
	{
		cout << buffer1 << endl;
	}

	cout << "读取文件的第三种方式" << endl;
	string buffer3;
	while (fin >> buffer3)
	{
		cout << buffer3 << endl;
	}

	fin.close();  //关闭文件,fin对象失效前会自动调用close()

	return 0;

}