15.1.3 流式输出(1)
第1章介绍了流式输出,本书中几乎每一章都使用了流式输出。本节首先简单回顾一些基本概念,然后介绍一些更高级的内容。
1. 输出基本概念
输出流定义在<ostream>头文件中。大部分程序员都会在程序中包含<iostream>头文件,这个头文件又包含输入流和输出流的头文件。<iostream>头文件还声明了标准控制台输出流cout。
使用输出流的最简单方法是使用<<运算符。通过<<可以输出C++(www.cppentry.com)的基本类型,例如int、指针、double和字符。此外,C++(www.cppentry.com)的string类也兼容<<,C风格的字符串也能正确输出。下面列举一些使用<<的示例:
- int i = 7;
- cout << i << endl;
-
- char ch = 'a';
- cout << ch << endl;
-
- string myString = "Marni is adorable.";
- cout << myString << endl;
-
- 代码取自OutputBasics\OutputBasics.cpp
输出如下所示:- 7
- a
- Marni is adorable.
cout流是写入到控制台的内建流,控制台也称为标准输出(standard output)。可将<<的使用串联起来,从而输出多个数据段。这是因为<<运算符返回一个流的引用,因此可以立即对同一个流再次应用<<运算符。例如:- int j = 11;
- cout << "On a scale of 1 to cute, Marni ranks " << j << "!" << endl;
-
- 代码取自OutputBasics\OutputBasics.cpp
-
输出如下所示:- On a scale of 1 to cute, Marni ranks 11!
C++(www.cppentry.com)流可以正确地解析C风格的转义字符,例如包含\n的字符串,但是完成\n功能更好的方法是使用内建的endl机制。下面的例子使用了endl,endl在std名称空间中定义,表示行结束符,并且刷新输出缓冲区。通过一行代码可以输出多行文本。- cout << "Line 1" << endl << "Line 2" << endl << "Line 3" << endl;
-
- 代码取自OutputBasics\OutputBasics.cpp
输出如下所示:- Line 1
- Line 2
- Line 3
2. 输出流的方法
毫无疑问,<<运算符是输出流最有用的部分。然而,还需要了解一些额外功能。如果看一下<ostream>头文件,会发现很多重载<<运算符定义的代码行。还可以看到一些有用的公共方法。
put()和write()
put()和write()是原始的输出方法。这两个方法接受的不是定义了输出行为的对象或变量,put()接受一个单独的字符,write()接受一个字符数组。传给这些方法的数据按照原本的形式输出,没有任何特殊的格式化和处理操作。例如,下面的函数接受一个C风格的字符串,并且将这个字符串输出到控制台,这个函数没有使用<<运算符:
- void rawWrite(const char* data, int dataSize)
- {
- cout.write(data, dataSize);
- }
-
- 代码取自Write\Write.cpp