设为首页 加入收藏

TOP

15.1.3 流式输出(1)
2013-10-07 15:35:08 来源: 作者: 【 】 浏览:63
Tags:15.1.3 流式 输出

15.1.3  流式输出(1)

第1章介绍了流式输出,本书中几乎每一章都使用了流式输出。本节首先简单回顾一些基本概念,然后介绍一些更高级的内容。

1. 输出基本概念

输出流定义在<ostream>头文件中。大部分程序员都会在程序中包含<iostream>头文件,这个头文件又包含输入流和输出流的头文件。<iostream>头文件还声明了标准控制台输出流cout。

使用输出流的最简单方法是使用<<运算符。通过<<可以输出C++(www.cppentry.com)的基本类型,例如int、指针、double和字符。此外,C++(www.cppentry.com)的string类也兼容<<,C风格的字符串也能正确输出。下面列举一些使用<<的示例:

  1. int i = 7;  
  2. cout << i << endl;  
  3.  
  4. char ch = 'a';  
  5. cout << ch << endl;  
  6.  
  7. string myString = "Marni is adorable.";  
  8. cout << myString << endl;  
  9.  
  10. 代码取自OutputBasics\OutputBasics.cpp  

输出如下所示:
  1. 7  
  2. a  
  3. Marni is adorable.  

cout流是写入到控制台的内建流,控制台也称为标准输出(standard output)。可将<<的使用串联起来,从而输出多个数据段。这是因为<<运算符返回一个流的引用,因此可以立即对同一个流再次应用<<运算符。例如:
  1. int j = 11;  
  2. cout << "On a scale of 1 to cute, Marni ranks " << j << "!" << endl;  
  3.  
  4. 代码取自OutputBasics\OutputBasics.cpp  
  5.  

输出如下所示:
  1. On a scale of 1 to cute, Marni ranks 11! 

C++(www.cppentry.com)流可以正确地解析C风格的转义字符,例如包含\n的字符串,但是完成\n功能更好的方法是使用内建的endl机制。下面的例子使用了endl,endl在std名称空间中定义,表示行结束符,并且刷新输出缓冲区。通过一行代码可以输出多行文本。
  1. cout << "Line 1" << endl << "Line 2" << endl << "Line 3" << endl;  
  2.  
  3. 代码取自OutputBasics\OutputBasics.cpp  

输出如下所示:
  1. Line 1  
  2. Line 2  
  3. Line 3  

2. 输出流的方法

毫无疑问,<<运算符是输出流最有用的部分。然而,还需要了解一些额外功能。如果看一下<ostream>头文件,会发现很多重载<<运算符定义的代码行。还可以看到一些有用的公共方法。

put()和write()

put()和write()是原始的输出方法。这两个方法接受的不是定义了输出行为的对象或变量,put()接受一个单独的字符,write()接受一个字符数组。传给这些方法的数据按照原本的形式输出,没有任何特殊的格式化和处理操作。例如,下面的函数接受一个C风格的字符串,并且将这个字符串输出到控制台,这个函数没有使用<<运算符:

  1. void rawWrite(const char* data, int dataSize)  
  2. {  
  3. cout.write(data, dataSize);  
  4. }  
  5.  
  6. 代码取自Write\Write.cpp  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇15.1.3 流式输出(2) 下一篇3.4.7 混入类

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)
·索引堆及其优化 - 菜 (2025-12-24 20:18:50)
·Shell 中各种括号的 (2025-12-24 19:50:39)
·Shell 变量 - 菜鸟教 (2025-12-24 19:50:37)