/*本文档记录 文本文件的 读操作*/
#include <iostream>
using namespace std;
#include <string>
//1.包含头文件
#include <fstream>
void test(){
//2.创建输入文件流
ifstream ifs;
//3.打开文件,确认打开方式
ifs.open("test.txt",ios::in);
if(!ifs.is_open()){
cout<<"文件打开失败"<<endl;
return;
}
//4.读内容
//每次只能运行下面一种方法的读取文件,不能同时运行
//4.1 法1:写入字符串列表,用ifs>>con判断
// cout<<"法1读取文本文件"<<endl;
// char con1[1024] = {0};//初始化接收字符串
// while(ifs>>con1){
// cout<<con1<<endl;
// }
//4.2 法2:写入字符串列表,用成员函数ifs.getline(字符串列表名,字符串列表大小)【注意传入参数列表】
// cout<<"------------------"<<endl;
// cout<<"法2读取文本文件"<<endl;
// char con2[1024] = {0};
// while(ifs.getline(con2,sizeof(con2))){
// cout<<con2<<endl;
// }
//4.3 法3:写入不定长字符串string ,但是使用全局函数getline(string字符串的名字,输入文件流)
// cout<<"------------------"<<endl;
// cout<<"法3读取文本文件"<<endl;
// string con3;
// while(getline(ifs,con3)){
// cout<<con3<<endl;
// }
//4.4 法4:一个字符一个字符地读
cout<<"------------------"<<endl;
cout<<"法4读取文本文件"<<endl;
char con4;
while( (con4=ifs.get()) != EOF){
//con4是待读的字符变量,字符变量接收ifs.get()函数的结果,EOF:end of the file,文档结尾标准,接收到的字符不是文档结尾,则一直读
cout<<con4;//不是一行一行读,而是一个字符一个字符读的,所以输出时,不用加endl标识
}
//5.关闭文件
ifs.close();
}
int main(){
test();
}