11.8 更多未讨论内容
I/O相关的细节问题看上去是无穷无尽的,因为它们只受限于人类的创造力和想象力。这就如同我们无法想象自然语言有多复杂一样。英语中的12.35按大多数其他欧洲语言的习惯应该表示为12,35。自然地,C++标准库提供了处理这一问题以及其他很多自然语言相关的I/O问题的功能。但是,你如何输出中文符号呢?你如何比较两个马拉雅拉姆语字符串呢?这些问题已经有解决方案了,但这些内容远远超出了本书的讨论范围。如果你对此感兴趣,请参考更为专门的或高阶的书籍(如Langer的《Standard C++IOStreams and Locales》和Stroustrup的《The C++Programming Language》),以及标准库和系统的文档。请搜索“本地化”(locale)一词,这个术语通常用于描述处理自然语言差异的程序设计语言特性。
另一个复杂性之源是缓冲机制:标准库iostream依赖于一个称为streambuf的机制。对于那些高端的应用(无论是从性能角度还是从功能角度),都不可避免地会用到streambuf。如果你觉得需要定义自己的iostream,或者需要调整iostream用于新的数据源/目的,参见Stroustrup的《The C++Programming Language》第38章或者系统文档。
当使用C++时,你也可能会遇到以printf()/scanf()为代表的C语言标准I/O函数族。如果你希望了解这部分内容,请参考27.6节和附录C.10.2,或者参考Kernighan和Ritchie所编写的优秀的C语言教材《The C Programming Language》,以及互联网上数不清的资源。每种程序设计语言都有自己的I/O机制,各不相同,有的很古怪,但大多数都(以不同方式)反映了我们在第10章和第11章中所介绍的基本思想。 ...