August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
本节提供一个接近实际的例子,它使用iostream库解决一个真实问题。当我们读入字符串时,是以空白符作为默认分隔符的。不幸的是,istream没有提供自定义分隔符的功能,也不能直接改变>>读入字符串的方式。于是,如果我们需要定义其他空白符,应该怎么做呢?回顾4.6.3节中的例子,我们读入“单词”并进行比较。那些单词都是以空白符分隔的,因此,如果我们输入
我们会得到这些“单词”:
我们在字典中是找不到“planned,”和“arrived;”这些字符串的,它们并不是单词。它们实际上是由单词加上毫无关系的、分散注意力的标点字符构成的。而在大多数场合下,我们是应该将标点与空白符等同对待的。那么该如何去掉这些标点呢?我们可以逐个处理字符,将标点字符删除或者转换为空白符,随后再从“清理干净的”输入中读取数据:
同样是前面给出的输入,以下代码会得到我们想要的单词:
不幸的是,这段代码有些乱,而且是专用而非通用的。如果对另外一个问题,标点集发生变化,我们又该怎么办呢?下面我们提出一种更为通用、更为有效的从输入流中删除不需要字符的方法。这种方法应该是怎样的呢?我们希望使用这一功能的用户程序是什么样的呢?考虑下面的代码: ...