《C++程序设计原理与实践》笔记 第10章 输入/输出流
在本章和下一章中,我们将介绍C++标准库中用于处理来自各种源的输入和输出的功能:I/O流。本章关注基本模型:如何读写单个值,以及如何打开和读写整个文件。下一章将介绍具体细节。 10.1 输入和输出 如果没有数据,计算就毫无意义。我们需要将数据输入到程序中来进行一些有价值的计算,并获取输出。数据的输入源和输出目标非常广泛。因此,我们需要一种将程序的读写操作与实际使用的输入/输出设备分离的方法...
在本章和下一章中,我们将介绍C++标准库中用于处理来自各种源的输入和输出的功能:I/O流。本章关注基本模型:如何读写单个值,以及如何打开和读写整个文件。下一章将介绍具体细节。 10.1 输入和输出 如果没有数据,计算就毫无意义。我们需要将数据输入到程序中来进行一些有价值的计算,并获取输出。数据的输入源和输出目标非常广泛。因此,我们需要一种将程序的读写操作与实际使用的输入/输出设备分离的方法...
在本章中,我们继续关注主要的程序设计工具——C++语言。本章主要介绍与用户自定义类型(即类和枚举)相关的语言技术细节。这些语言特性大部分是以逐步改进一个Date类型的方式来介绍的。采用这种方式,我们还可以顺便介绍一些有用的类设计技术。 9.1 用户自定义类型 C++语言提供了一些内置类型(built-in type),例如char、int和double。对于一个类型,如果编译器无须借助程序...
在本章和下一章中,我们将注意力从程序设计转移到主要的编程工具——C++语言上。我们会介绍一些语言的技术细节,来给出一个C++的基本功能的稍宽的视角,并从更系统化的角度讨论这些功能。 8.1 技术细节 程序设计(programming)(即如何用代码表达思想)远比程序设计语言的特性(技术细节)更有意思。但是,当你开始编程时,你必须学习编程语言的“语法和词汇”,这就是本章和下一章要做的事。但是...
1.简介 Apache Flink是一个开源的分布式流处理框架,旨在提供高效、可扩展、容错的流式数据处理技术,支持实时流处理和批处理,并提供了Java、Scala、Python等语言的API。 官方网站:https://flink.apache.org/ 官方文档:https://nightlies.apache.org/flink/flink-docs-stable/ AP...
编写程序需要不断地改进你要实现的功能及其表达方式。第6章给出了一个能够工作的计算器程序的最初版本,本章将对其进一步改进。“完成程序”意味着使程序更易于使用和维护——包括改进用户接口、做一些仔细的错误处理工作、增加一些有用的特性、重构代码使之易于理解和修改。 7.1 引言 当程序第一次“正常”运行时,你大约只完成了一半的工作。一旦程序“基本可以工作”,真正的乐趣就开始了!此时我们可以在初步版...
接下来的两章将从一个最初不清晰的想法开始,经过分析、设计、实现、测试、再设计、再实现等步骤开发一个计算器程序,目的是帮助读者了解在编写代码的过程中如何去思考。在这个过程中将讨论程序结构、用户定义类型和输入处理。 6.1 一个问题 编写程序往往从一个问题开始,即你有一个问题,想要一个程序来帮助解决。因此理解问题是编写好程序的关键。 我们编写一个简单计算器,即“让计算机对输入的表达式做常规的...
C++支持声明和定义分离,通常的做法是将声明放在头文件中、定义放在源文件中,通过包含头文件来引入声明。多次声明一个变量或函数不会有问题,但多次定义则会导致重定义错误。下面在两种不同场景下进行分析。 1.场景1 假设头文件foo.h声明了一个全局常量A和一个函数f: extern const int A; int f(int x); a.cpp包含foo.h并定义了常量A: #inc...
1.简介 GoogleTest是由Google开发的一个C++测试框架,支持Linux、Windows和macOS操作系统,使用Bazel或CMake构建工具。 项目主页:https://github.com/google/googletest 官方文档:https://google.github.io/googletest/ 2.基本概念 断言(assertion):检查一...
本章将讨论程序的正确性、错误和错误处理。 5.1 引言 在编写程序时,错误是不可避免的。而最后的程序必须是没有错误的,至少不存在不可接受的错误。 错误的分类有很多种,例如: 编译时错误(compile-time errors):由编译器发现的错误,例如语法错误、类型错误 链接时错误(link-time errors):链接器将对象文件链接为可执行程序时发现的错误 运行时错误...
本章将介绍一些与计算相关的基本概念。 4.1 计算 程序所做的事情就是计算(compute),即接受输入、产生输出。 从编程的角度看,最重要也是最有趣的两类输入、输出是“从其他程序输入/输出”和“从程序的其他部分输入/输出”。本书后续的大部分内容可以视为后一种类型的实例:在协作完成一个大的软件时,应该如何合理地设计程序结构,并能够保证每一个子程序之间都能够正确地共享和交互数据?这是编...