论坛首页 编程语言技术论坛

读 《C++ Primer Plus》第17章 输入输出(一)

浏览 3137 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-03-23   最后修改:2009-03-27

 C++ Primer Plus》第171-3

     输出

cstdio(stdio.h)     cstring(string.h)   iostream(iostream.h) cmath(math.h)

1.          输出字符串的地址:cout<<(void *)amount

对于没有void*类型的系统,则要强制转换成unsignedunsigned long类型

2.          ostream的两个输出方法:

a)          ostream & put(char);     在原型合适的情况下,可以将数值型参数用于put,让函数原型自动将参数转换为正确的char值。

b)         basic_ostream<char T,traints>& wirte(const char_type* s, streamsize n);        第一个参数为要显示的字符串的地址,第二个参数指出要显示多少个字符。返回类型为ostream &.   该函数不会将数字转换位相应的字符,而是传输内存中存储的位表示。例如4字节的long值将最为4个独立的字节被输出。输出设备将把每个字节作为ASCII码表示。

3.          刷新缓冲区:

a)          输入即将发生时刷新缓冲区

b)         将换行符发送到缓冲区后,将刷新缓冲区

强制刷新缓冲区:

cout<<flush;(刷新buffer)     也可以使用flush(cout);

cout<<endl;(刷新buffer并且插入一个换行符)

4.          cout进行格式化

a)          修改显示的使用的计数系统

                         i.              使用dechexoct,即dec(cout)

ii.  cout<<hex;直到下一次改变输出方式时为止

b)         调整字段的宽度

i.       int width()           返回字段宽度的当前设置

ii.      int width(int i)               设置字段宽度为i个空格,并返回以前的字段宽度

width方法只影响接下来显示的一个项目,然后字段宽度将恢复为默认值。

用法如下:cout<<”#”;cout.width(12);cout<<12<<”#”;

默认为右对齐。

c)          设计填充字符 cout.fill(character);           新的填充字符将一直有效,只到更改它为止。

d)         设计浮点数的显示精度cout.precision(2);      一直有效,直到被更改

默认模式下,它指的是显示的总位数。在定点模式和科学模式下,精度值的是小数点后的位数。

e)          打印末尾的0和小数点       cout.setf(ios_base::showpoint);

如果使用的是iostream.h则可能是ios::showpoint

cout.setf(fmtflags)的一些位置常量的说明(fmtflagsbitmask(存储各个位值的类型)typedef形式)

Constant

Meaning

ios_base::boolalpha

输入和输出bool值,可以为truefalse  cout<<true

        showpoint

显示末尾的小数点

        fixed/scientific

指定为定点/科学计数(显示末尾的0)

        showbase

对于输出,使用C++前缀

        uppercase

十六进制,使用大写字母;E表示法

        showpos

在正数前面加+,仅对于十进制

          cout.setf(long,long)的说明(返回值是,ios_base::fmtflags) 

第二个参数

第一个参数

含义

ios_base::basefield

ios_base::dec

使用基数10

 

        oct

         8

 

ios_base::hex

使用基数16

ios_base::floatfiled

        fixed

使用定点计数法

       

        scientific

使用浮点计数法

       ajustfiled

        left

左对齐

 

        right

右对齐

 

        internal

符号或基数前缀左对齐,值右对齐

         内部对齐是指的是:将符号或基数前缀放在字段的左侧,余下的数字放在字段的右侧。

         void unsetf(fmtflags mask);   消除设计位

         启用默认模式的方法:

                   cout.setf(ios_base::showpoint);

                   cout.unsetf(ios_base::floatfiled);

boolalpha, noboolalpha, showbase, noshowbase, showpoint, showpos, unshowpos, uppercase, nouppercase

iternal, left, right, dec, hex, oct, fixed, oct, scientific

         标准控制符

         用法如:cout<<left<<”hello world”;

         iomanip提供的控制符:

         setprecision(),setfill(),setw();

         用法如普通控制符,如cout<<setfill();

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics