Skip to Content
C++程序设计:原理与实践(基础篇)(原书第2版)
book

C++程序设计:原理与实践(基础篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(基础篇)(原书第2版)

10.11 读取结构化的文件

下面我们应用这个“标准输入循环”来解决一个实际问题。照例,我们还是通过这个例子来展示有广泛应用范围的设计和编程技术。假定要处理一个温度读数文件,其结构为:

·文件包含若干年份(包含每月的读数)。

·一个年份以“{year”开始,后跟一个整数,表示年份值,如1900,然后以“}”结束。

·一个年份包含若干月份(包含每日的读数)。

·一个月份以“{month”开始,后跟一个三字符形式的月份名,如jan,然后以“}”结束。

·一个读数由一个时间和一个温度值组成。

·一个读数以“(”开始,后跟日期值、小时值和温度值,最后以“)”结束。

例如:

这种格式有点怪,通常结构化文件的格式都有些特别。现在工业界的发展趋势是,结构化文件变得更有规律、更为层次化(如HTML和XML文件)。但现实情况是,我们还是极少能控制需要处理的文件的格式。文件的格式就是这个样子,我们要做的就是正确读取其内容。如果格式非常乱,或文件包含太多错误,我们可以编写一个格式转换程序,将文件转换为更适合我们程序的格式。另一方面,我们通常还可以选择数据的内存表示形式以适应程序的需求,因此我们通常可以选择合适的输出格式,来满足特定的需求和偏好。

假定我们只能接受上述给定的温度读数文件格式。幸运的是,其中的年、月等组成部分都是可以自识别的(这有点像HTML或XML文件)。另一方面,单个读数的格式对合法性检查没有什么帮助。例如,没有什么信息可以帮助我们处理下列情况:用户将日期值和小时值交换;用户使用摄氏度,而程序期望的是华氏度,或者相反。我们必须应对这些情况。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Python编程入门与实战

Python编程入门与实战

Posts & Telecom Press, Fabrizio Romano

Publisher Resources

ISBN: 9787111562252