一、头文件
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
二、创建输入流对象
string filename = "E:/txt/test.txt";
ifstream fin;
fin.open(filename, ios::in);
与输出流不同,创建输入流对象,打开文件,若文件不存在,则打开失败
注意,输入流对象的唯一打开模式为ios::in 缺省值
实际上,下面三种打开书写形式作用相同
ifstream fin;
fin.open(filename, ios::in);
ifstream fin(filename);
ifstream fin(filename,ios::in);
输入流也要判断文件是否打开成功
失败的主要原因有:
(1)目录不存在
(2)文件不存在
(3)没有权限,Linux平台下很常见
if (fin.is_open() == false)
{
cout << "打开文件" << filename << "失败\n";
return 0;
}
三、读取文件内容
文本文件一般以行的方式组织数据,所以我们以行的方式读取
方法一:
string buffer;
while (getline(fin, buffer))//从文件中读取一行数据,存在buffer中
{
cout << buffer << endl;
}
从文件中读取一行行数据,存在buffer中,直到文件读取完,函数返回空
方法二:
char buffer[51];
while (fin.getline(buffer, 50))
{
cout << buffer << endl;
}//一定要保证缓冲区足够大
方法三:
string buffer;
while (fin >> buffer)
{
cout << buffer << endl;
}
第三种方法几乎与第一种相同,但比第一种更简单一些
四、关闭文件
fin.close();
cout << "操作文件完成\n";