C++读取文件的四种方式总结_天天速看料 - 行业动态 -

当前位置:首页  >  行业动态  > 正文

C++读取文件的四种方式总结_天天速看料

C++读取文件的四种方式总结_天天速看料
2023-04-10 06:00:10 来源:脚本之家

C++可以根据不同的目的来选取文件的读取方式,目前为止学习了C++中的四种文件读取方式。

C++文件读取的一般步骤:

1、包含头文件 #include


(资料图片)

2、创建流对象:ifstream ifs(这里的ifs是自己起的流对象名字)

3、打开文件:file.open("文件路径","打开方式"),打开文件后并判断文件是否打开成功,ifs.is_open()是用于判断文件是否打开的语句

4、进行文件读取操作

5、关闭文件

ifs.close();

第一种方法:采用“<<”运算符

#include
#include
using namespace std;
 
int main()
{
 // 创建流对象    
ifstream ifs;
 //打开文件并判断是否打开成功如果成功则读取数据
    readFile.open("test.txt", ios::in);
    if (ifs.is_open())
    {
        cout << "文件打开成功" << endl;
        //第一种方法
        char buf[100] = { 0 };
        while (ifs >>buf)
        {
            cout << buf << endl;
        }
    }
    else
    {
        cout << "文件打开失败" << endl;
    }
    //关闭文件
    ifs.close();
 
 
    return 0;
}

或者可以写成以下,将判断是否成功打开文件换一种方式实现读取数据

#include
#include
using namespace std;
 
void test01()
{
    // 2创建流文件
    ifstream ifs;
    // 3打开文件并判断是否打开成功
    ifs.open("test.txt", ios::in);
        if (!ifs.is_open())
        {
            cout << "打开失败" << endl;
            
        }
        //读数据第一种方法
        char buff[1024] = {0};
        while (ifs >> buf)
        {
            cout << buf << endl;
        }

解释:这种方式和采用cin>>进行写入类型,ifs>>buf进行写入时永远是从buff[0]开始,不会进行追加式的写入,ifs在遇到EOF(End Of File)时会返回False,以此来跳出while循环。

局限性:由于“<<”运算符自身的性质,会将一切空格当作终止条件,这样的话就无法输出空格信息,采用这种方法会将一行信息进行分段读出,对于类对象的信息读取是很有用的

第二种方法:利用中的getline函数,按行读取,这样每一行内的所有空格也可以顺利读取

#include
#include
#include
using namespace std;
 
int main()
{
    ifstream ifs;
    ifs.open("test.txt", ios::in);
 
    if (readFile.is_open())
    {
        cout << "文件打开成功" << endl;
        
        string buf;
        while (getline(ifs,buf))
        {
            cout << buf << endl;
        }
    }
    else
    {
        cout << "文件打开失败" << endl;
    }
 //关闭文件   
 ifs.close();
  
    return 0;
}

同样,也有两种方式

#include
#include
using namespace std;
 
void test01()
{
    // 2创建流文件
    ifstream ifs;
    // 3打开文件并判断是否打开成功
    ifs.open("test.txt", ios::in);
        if (!ifs.is_open())
        {
            cout << "打开失败" << endl;
            
        }
      //第二种
        string buf;
        while(getline(ifs,buf))
        {
            cout << buf << endl;
        }
    //5 关闭文件
        ifs.close();
}

getline()函数会在文件读完时返回False跳出while循环,getline可以一次读取一行文件,保持读出内容和文件内容一致。

第三种方法: 利用ifs流对象内部的getline方法,这个名字虽然和第二种中的一样,但是传入的参数不同,并不是同一个函数

#include
#include
#include
using namespace std;
 
int main()
{
//创建流对象    
ifstream ifs;
    readFile.open("test.txt", ios::in);
 
    //判断文件是否成功打开成功则读取数据
    if (ifs.is_open())
    {
        cout << "文件打开成功" << endl;
        char buf[100] = { 0 };
        while (ifs.getline(buf,sizeof(buf)))
        {
            cout << buf << endl;
        }
        
    }
    else
    {
        cout << "文件打开失败" << endl;
    }
 
 
     //关闭文件
    ifs.close();
    return 0;
}
#include
#include
using namespace std;
 
void test01()
{
    // 2创建流文件
    ifstream ifs;
    // 3打开文件并判断是否打开成功
    ifs.open("test.txt", ios::in);
        if (!ifs.is_open())
        {
            cout << "打开失败" << endl;
            
        }
        //读取数据的第三种方法
        char buf[100] = { 0 };
        while (ifs.getline(buf, sizeof(buf)))
        {
            cout << buf << endl;
        }
    //5 关闭文件
        ifs.close();
}

第四种方法:利用ifs内部的get()函数一个个的将字符读出来,遇到EOF时返回False退出while循环,EOF 是 end of file的标志,不太建议使用这个,因为这个很慢,只能一个一个字符读取

#include
#include
using namespace std;
 
int main()
{
    //创建流对象
    ifstream ifs;
    ifs.open("test.txt", ios::in);
    //判断是否成功打开如果打开则读取数据
    if (ifs.is_open())
    {
        cout << "文件打开成功" << endl;
        char buf = 0;
        while ((buf=ifs.get())!=EOF)
        {
            cout << buf;
        }
    }
    else
    {
        cout << "文件打开失败" << endl;
    }
//关闭文件    
ifs.close();
    return 0;
}
#include
#include
using namespace std;
 
void test01()
{
    // 2创建流文件
    ifstream ifs;
    // 3打开文件并判断是否打开成功
    ifs.open("text.txt", ios::in);
        if (!ifs.is_open())
        {
            cout << "打开失败" << endl;
            
        }
    // 第四种读取方法
        char c;
        while(((c = ifs.get()) != EOF))
        {
            cout << c;
        
        }
        //5 关闭文件
        ifs.close();
}

到此这篇关于C++读取文件的四种方式总结的文章就介绍到这了,更多相关C++文件读取内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

标签:

(责任编辑:news01)
全球热点评!360夫妻档散伙!起底周鸿祎背后的女人:任27家公司股东,曾投资快播、酷狗

全球热点评!360夫妻档散伙!起底周鸿祎背后的女人:任27家公司股东,曾投资快播、酷狗

图源:图虫创意多年夫妻,劳燕分飞,周鸿祎官宣与妻子胡欢离婚。4月4日晚间,三六零发布公告披露,公司...
04-05 10:54:05
NBA官方公布了NBA体育道德风尚奖的最终候选人名单 当前速递

NBA官方公布了NBA体育道德风尚奖的最终候选人名单 当前速递

NBA官方公布了2022-23赛季NBA体育道德风尚奖的最终候选人名单。六位入围到最终候选的球员分别是:阿德巴...
04-05 09:21:26
安龙县义工联合会-天天快报

安龙县义工联合会-天天快报

1、安龙县义工联合会创建于2014年10月10日,由安龙县籍爱心青年人士聂顺贞发起,于2014年12月2日由共青团安
04-05 07:53:12
怎样网购详细步骤_怎么网购 详细步骤-世界微资讯

怎样网购详细步骤_怎么网购 详细步骤-世界微资讯

1、以淘宝网为例打开淘宝网——在搜索框输入您所需要购买的物品或服务。2、例如“连衣裙秋季韩版显瘦”...
04-05 05:53:58
文献著录总则_关于文献著录总则简介 头条焦点

文献著录总则_关于文献著录总则简介 头条焦点

1、我国国家标准《文献著录总则》是用于规范信息描述项目的准则。信息描述项目亦称著录项目,是用来揭示...
04-05 02:46:30
2023中国综合实力百强市:广州第5,杭州远超苏州,重庆领先成都_环球观点

2023中国综合实力百强市:广州第5,杭州远超苏州,重庆领先成都_环球观点

2023中国综合实力百强市:广州第5,杭州远超苏州,重庆领先成都,杭州,上海,北京,南京,重庆市,广州市,苏...
04-04 22:46:10
新资讯:怪物学院怪物们送礼物

新资讯:怪物学院怪物们送礼物

怪物学院怪物们送礼物,无语无关无故做错,其实学业不难做,主要是为了鼓励我们成长的人,我们都很开心...
04-04 21:29:39
天天热讯:李家超:香港将举办一系列全民国家安全教育日活动

天天热讯:李家超:香港将举办一系列全民国家安全教育日活动

4月4日,香港特区行政长官李家超在出席行政会议前见记者时表示,4月15日是全民国家安全教育日,特区政府...
04-04 21:07:03
辛集市获评“2022中国最具投资吸引力县(市、区)”

辛集市获评“2022中国最具投资吸引力县(市、区)”

辛集市获评“2022中国最具投资吸引力县(市、区)”,招商,河北,辛集市,吸引力,经济开发区
04-04 19:53:29
科尔摩根伺服驱动器显示报警F303维修分析

科尔摩根伺服驱动器显示报警F303维修分析

科尔摩根伺服驱动器显示报警F303维修分析科尔摩根伺服驱动器报警维修F303失控。电机未遵循命令值。当前...
04-04 18:54:57
热推荐:东丽城投3亿元私募项目状态更新为“已反馈”

热推荐:东丽城投3亿元私募项目状态更新为“已反馈”

乐居财经张林霞4月4日,天津市东丽城市基础设施投资集团有限公司2023年面向专业投资者非公开发行公司债...
04-04 18:07:35
CBA季后赛惨烈争夺:广东领衔军备竞赛12队8队三外援 杜锋已在下大棋

CBA季后赛惨烈争夺:广东领衔军备竞赛12队8队三外援 杜锋已在下大棋

CBA季后赛惨烈争夺:广东领衔军备竞赛12队8队三外援杜锋已在下大棋
04-04 17:12:43
日本小笠原群岛父岛附近海域发生5.3级地震

日本小笠原群岛父岛附近海域发生5.3级地震

据日本广播协会(NHK)报道,当地时间4日16时7分左右,日本小笠原群岛父岛附近海域发生5 3级地震,最大...
04-04 16:08:48
【环球聚看点】女生送猪铃铛说明什么

【环球聚看点】女生送猪铃铛说明什么

女生送猪铃铛说明这些,我觉得吧,我也送给女孩子的东西,我觉得送礼物一定要投其所好,看看女生喜欢什...
04-04 15:20:22
2023昆明未成年人清明节网上祭扫入口+主题+时间|快讯

2023昆明未成年人清明节网上祭扫入口+主题+时间|快讯

2023年扣好人生第一粒扣子传承红色基因未成年人清明祭扫指南祭扫主题:扣好人生第一粒扣子传承红色基因...
04-04 15:17:02
怪物猎人世界iceborne介绍 怪物猎人世界冰原版

怪物猎人世界iceborne介绍 怪物猎人世界冰原版

经历了几次联动之后MHW第一个大型dlc也将要在今年上线,下面就让我们通过这篇怪物猎人世界iceborne介绍...
04-04 14:21:27
环球今亮点!港A汽车股集体下跌,蔚来跌超8%,特斯拉构建低价车产能计划

环球今亮点!港A汽车股集体下跌,蔚来跌超8%,特斯拉构建低价车产能计划

格隆汇4月4日丨截至半日收盘,A股比亚迪、江淮汽车、长城汽车均跌超2%;港股蔚来跌超8%,小鹏汽车跌超5%...
04-04 13:10:53
保温杯选择PC材质内盖不易有异味 环球观速讯

保温杯选择PC材质内盖不易有异味 环球观速讯

作为最常用的生活用品之一,保温杯品种多样、品牌众多,质量也有好有坏,该怎么挑选,挑选时该注意些什...
04-04 12:08:04
2023保定龙凤福园清明节祭扫服务指南

2023保定龙凤福园清明节祭扫服务指南

综合服务2023年清明祭扫高峰日期为3月25日、3月26日、4月1日、4月2日、4月5日,如需要在清明期间办理碑...
04-04 11:20:27
每日快播:科力远年报:归母净利润同比增逾三倍 镍氢、锂电双赛道布局效果显现

每日快播:科力远年报:归母净利润同比增逾三倍 镍氢、锂电双赛道布局效果显现

4月3日晚间,科力远(600478 SH)发布2022年年报。报告期内公司实现营业收入37 86亿元,较上年同比增...
04-04 10:42:05
世界热头条丨“澳车北上”突破10万辆次 占港珠澳大桥珠海公路口岸客车通关总量约五成

世界热头条丨“澳车北上”突破10万辆次 占港珠澳大桥珠海公路口岸客车通关总量约五成

人工智能朗读:南方日报讯自今年1月1日“澳车北上”政策落地实施以来,澳门单牌车通关数量呈阶梯式增长...
04-04 10:06:41
热门看点:腾讯会议服务调整今日正式生效

热门看点:腾讯会议服务调整今日正式生效

4月4日电,腾讯会议宣布,自今日起,免费版用户发起的单场会议规模将从疫情前最高25人调整为最高100人,...
04-04 09:22:32
俄外交部:作为对芬兰加入北约的回应 俄将加强西北部军事力量

俄外交部:作为对芬兰加入北约的回应 俄将加强西北部军事力量

据央视新闻消息,当地时间4月3日,俄罗斯副外长格鲁什科表示,作为对芬兰加入北约的回应,俄罗斯将加强...
04-04 08:28:33
中国东航:4月3日融券卖出48.06万股,融资融券余额3.17亿元-全球热讯

中国东航:4月3日融券卖出48.06万股,融资融券余额3.17亿元-全球热讯

4月3日,中国东航(600115)融资买入1088 5万元,融资偿还3110 32万元,融资净卖出2021 82万元,融资...
04-04 07:19:03
天天观热点:做试管婴儿疼么_做试管婴儿疼吗

天天观热点:做试管婴儿疼么_做试管婴儿疼吗

1、试管婴儿是目前广泛使用的一种辅助生育方式。2、可以帮助无法自然怀孕的女性生出健康的宝宝。3、做试...
04-04 06:04:59
对话古建专家:既要修缮建筑本体,也要保护文化内涵 环球资讯

对话古建专家:既要修缮建筑本体,也要保护文化内涵 环球资讯

作为历史文化名城,北京不仅拥有世界上规模最大、保存最完好的古代皇家建筑群,还拥有数量巨大的各类古...
04-04 02:39:07
新出的电影2023_新出的电影

新出的电影2023_新出的电影

1、成龙《十二生肖》,梁朝伟《一代宗师》,徐峥《人再囧途》。2、3D版2012,陆川《王的盛宴》,李安《...
04-03 22:44:30
环球快讯:注意!齐峰新材将于4月25日召开股东大会

环球快讯:注意!齐峰新材将于4月25日召开股东大会

齐峰新材(SZ002521,收盘价:5 74元)4月3日发布公告称,2023年4月25日(星期二)15:00,公司将在齐峰新材...
04-03 21:10:38
吟诗的指尖 | 樱子小姐的脚下埋着秘密 第七卷 ~ 序章

吟诗的指尖 | 樱子小姐的脚下埋着秘密 第七卷 ~ 序章

我跟『狼』相遇是一月的后半,从早上天空就是一片碧蓝的晴天,因为辐射冷却,所以一整天也很清脆冰冷,...
04-03 20:01:18
每日快播:强基固本夯基础 务实培训促提升——“骨关节炎运动康复技术”实操指导持续进行中

每日快播:强基固本夯基础 务实培训促提升——“骨关节炎运动康复技术”实操指导持续进行中

强基固本夯基础务实培训促提升为持续推进特色专病科室建设,进一步提升基层医疗卫生机构医疗服务能力,...
04-03 19:17:17

为您推荐

精彩推送