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版)

6.7 试验第二个版本

现在,我们准备测试程序的第二个版本。计算器程序(包含Token_stream)的第二个版本可在calculator01.cpp获得。运行并试验输入2并换行以后,程序没有输出,再次换行程序仍然没有输出。输入3并换行以后程序输出2,输入2+2并换行以后程序输出结果3。此时屏幕上显示:

由此可知,也许在expression()和term()中使用putback()并没有解决问题。下面做另一个测试:

程序给出了正确的结果!但最后一个结果(6)却不见了。这里仍然存在一个单词预读方面的问题。但是,这次的问题不是我们的程序“吃掉”了字符,而是它不能返回表达式的运算结果,除非再输入后续表达式。也就是说,一个表达式的结果不是被立即输出,而被推迟到程序读入下一个表达式的第一个单词以后才输出。不幸的是,只有在输入下一个表达式并回车以后,程序才能读到那个单词。程序本身没有错误,只是它的输出有些延迟。

如何改进这个问题?一个很明显的方法是加入一个“输出命令”。我们使用分号标识一个表达式的结束并触发结果的输出。另外,我们再增加一个“退出命令”,实现程序的正常退出。字符q(表示“quit”-退出)用于表示退出命令是很恰当的。在原来版本的main()函数中,有:

我们把它改成下面这样,可能有点复杂,但却更加实用: ...

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.
Start your free trial

You might also like

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

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

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

管理Kubernetes

Brendan Burns, Craig Tracey
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9787111562252