strong_fee 发表于 2013-1-30 20:54:03

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

读 《C++ Primer Plus》第17章1-3节
一   输出
cstdio(stdio.h)   cstring(string.h)   iostream(iostream.h) cmath(math.h)
1.          输出字符串的地址:cout<<(void *)amount
对于没有void*类型的系统,则要强制转换成unsigned或unsigned 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.            使用dec,hex,oct,即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)的一些位置常量的说明(fmtflags是bitmask(存储各个位值的类型)的typedef形式)
Constant
Meaning
ios_base::boolalpha
输入和输出bool值,可以为true或falsecout<<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
页: [1]
查看完整版本: 读 《C++ Primer Plus》第17章 输入输出(一)