输出流
阅读(181)
    C++的类ostream提供了格式化输出和无格式输出的功能。输出功能包括:用流插入运算符输出标准类型的数据;用成员函数put输出字符;成员函数write的无格式化输出(3.5节);输出十进制、八进制、十六进制格式的整数;输出各种精度的浮点数、输出强制带有小数点的浮点数以及用科学计数法和定点计数法表示的浮点数;输出在指定域宽内对齐的数据;输出在域宽内用指定字符填充空位的数据;输出科学计数法和十六进制计数法中的大写字母。

  1、流插入运算符
    流插入运算符(即重载的运算符<<)可实现流的输出。重载运算符<<是为了输出内部类型的数据项、字符中和指针值。3.9节要详细介绍如何用重载运算符<<输出用户自定义类型的数据项。
图3.3中的范例程序用一条流插入语句显示了输出的字符串。图3.4中的范例程序用多条流插入语句显示输出的字符串,该程序的运行结果与图3.3中程序的运行结果相同。

//用一条流插入语句输出字符串.
#include <iostream >
using namespace std;
int main()
  cout << "Welcome to C++!\n";
   return O;
}

输出结果:
Welcome to C++!


//用两条流插入语句输出字符串
#include <iostream >
using namespace std;
int main()
{
   cout << "Welcome to ";
   cout << "C++!\n";

   return 0;
}

输出结果:
Welcome to C++!


    也可以用流操纵算子endl(行结束)实现转义序列\n(换行符)的功能(见图3.5)。流操纵算子endl发送一个换行符并刷新输出缓冲区(不管输出缓冲区是否已满都把输出缓冲区中的内容立即输出)。也可以用下面的语句刷新输出缓冲区:
    cout << flush;


//使用流操纵算子endl
#include <iostream.h>
using namespace std;
int main{)
{
   cout << "Welcome to ";
   cout << "c++!';
   cout << endl;    //流操纵算子

   return 0;
}

输出结果:
Welcome to C++!



//输出一个表达式的值
#include <iostream.h>
using namespace std;
int main()
{
   cout << "47 plus 53 is ";

   // parentheses not needed; used for clarity
   cout << ( 47 + 53 );     // 表达式
   cout << endt;

   return O;
}

输出结果:
47 plus 53 is 100
  
//连续使用重载运算符<<
#includc<iostream.h>
int  main()
{
   cout << "47 plus 53 is " << ( 47 + 53 ) << endl;
   return  O;
}

输出结果:
47 plus 53 is 100

    ((( cout << " 47 plus 53 is " ) << 47 + 53 ) << endl);
之所以可以使用这种写法,是因为重载的运算符<<返回了对其左操作数对象(即cout)的引用,因此最左边括号内的表达式:
    ( cout << " 47 plus 53 is " )
它输出一个指定的字符串,并返回对cout的引用,因而使中间括号内的表达式解释为:
    ( cout << ( 47 + 53 ) )
它输出整数值100,并返回对cout的引用。于是最右边括号内的表达式解释为:
    cout << endl;
它输出一个换行符,刷新cout并返回对cout的引用。最后的返回结果未被使用。

2、输出char*类型的变量
C语言式的I/O必须要提供数据类型信息。C++对此作了改进,能够自动判别数据类型。但是,C++中有时还得使用类型信息。例如,我们知道字符串是char*类型,假定需要输出其指针的值,即字符串中第一个字符的地址,但是重载运算符<<输出的只是以空(null)字符结尾的char*类型的字符串,因此使用void*类型来完成上述需求(需要输出指针变量的地址时都可以使用void*类型)。图3.8中的程序演示了如何输出char*类型的字符串及其地址,辅出的地址是用十六进制格式表示。在C++中,十六进制数以0x或0X打头,3.6.1节、3.7.4节、3.7.5节和3.7.7节要详细介绍控制数值基数的方法。

//输出char*类型变量的地址
#include <iostream.h>
using namespace std;
int main()
{
   char *string = "test";

   cout << "Value of string is: "<< string
       << "\nValue of static cast< void *>( string ) is:"
       << static_cast< void*>( string )<<endl;
  return 0;
}

输出结果:
Value of string is:test
Value of staticcast <void*>( string )is:Ox00416D50

3、用成员函数put输出字符和put函数的连续调
    用put成员函数用于输出一个字符,例如语句:
    cout.put('A');
  将字符A显示在屏幕上。
    也可以像下面那样在一条语句中连续调用put函数:
    cout.put('A').put('\n');
  该语句在输出字符A后输出一个换行符。和<<一样,上述语句中圆点运算符(.)从左向右结合,put
  成员函数返回调用put的对象的引用。还可以用ASCII码值表达式调用put函数,语句cout.put(65)也
  输出字符A。

共有0份作业   我来完成作业