2.4 关于输入输出流

前面所看到的仅仅是输入输出流类最基本的用法。它的输出还有另外的一些格式,比如,对于数值的输出格式有十进制、八进制、十六进制。下面是另一个使用输入输出流的例子:

2.4 关于输入输出流 - 图1

在这个例子中,输入输出流利用iostream操作符,将数字分别以十进制、八进制和十六进制打印出来(操作符不进行打印操作,但它改变输出流的状态)。浮点数的格式由编译器自动确定。此外,通过(显式)类型转换(cast),任何字符都能转换成char类型(char是保存单字符的数据类型),发送到流对象。显式类型转换看起来像函数调用:char()带上字符的ASC Ⅱ码值。在上述程序中,char(27)是把“escape”发送到cout。

2.4.1 字符数组的拼接

C预处理器的一个重要功能就是可以进行字符数组的拼接(character array concatenation)。书中的一些例子要用到这项重要功能。如果两个加引号的字符数组邻接,并且它们之间没有标点,编译器就会把这些字符数组连接成单个字符数组。当代码列表宽度有限制时,字符数组的拼接就特别有用。

2.4 关于输入输出流 - 图2

初看,上述程序好像是错的,因为在每行结束没有分号。请记住C/C++是自由格式语言,虽然一般情况下看到在每行的末尾带有一个分号,但实际要求是在每个语句结束时才加分号,而一个语句很可能要写好几行。