C++初学者指南 第十一篇(5)

来源:互联网 发布:租号玩软件下载 编辑:程序博客网 时间:2024/05/17 04:52
转载请标明出处:http://blog.csdn.net/zhangxingping

基本技能11.5:使用控制器来进行格式化输入和输出

C++的输入和输出系统提供了第二种可用于修改流格式参数的方法。这种方法使用到了特殊的函数,叫做控制器。这种控制器可用于输入/输出表达式中。表格11-1列出了标准的控制器。在使用需要参数的控制器的时候我们必须在程序中包括<iomanip>

控制器

引入的目的

输入/输出

boolalpha

打开boolalpha标记开关

输入/输出

dec

打开dec标记开关

输入/输出

endl

输出一个换行字符并强制流输出数据

输出

ends

输出一个空字符('/0')

输出

fixed

打开fixed标记开关

输出

flush

强制输出流中的所有数据

输出

hex

打开hex标记开关

输入/输出

internal

打开internal标记开关

输出

left

打开left标记开关

输出

noboolalpha

关闭boolalpha标记开关

输入/输出

noshowbase

关闭showbase标记开关

输出

noshowpoint

关闭showpoint标记开关

输出

noshowpos

关闭showpos标记开关

输出

noskipws

关闭skipsw标记开关

输入

nounitbuf

关闭unitbuf标记开关

输出

nouppercase

关闭uppercase标记开关

输出

oct

打开oct标记

输入/输出

resetosflags(fmtflags f)

关闭f参数中指定的标记

输入/输出

right

打开right标记

输出

scientific

打开scientific标记

输出

setbase(int base)

设置整数的基数

输入/输出

setfill(int ch)

设置填充字符

输出

setiosflags(fmtflags f)

打开f参数中指定的标记开关

输入/输出

setprescision(int p)

设置小数的精度

输出

setw(int w)

设置宽度

输出

showbase()

打开showbase标记开关

输出

showpoint()

打开showpoint标记开关

输出

showpos

打开showpos标记开关

输出

skipws

打开skipws标记开关

输入

unitbuf

打开unitbuf标记开关

输出

uppercase

打开uppercase标记开关

输出

ws

跳过前导的空白字符

输入

表格11-1 C++中的输入/输出控制器

这些格式控制器通常是作为较大的输入/输出表达式的一部分来使用的。下面的程序就演示了如何使用上面提到的控制器来对输出格式进行控制:

//演示输入/输出控制器的使用#include <iostream>#include <iomanip>using namespace std;int main(){    cout << setprecision(2) << 1000.234 << endl;    cout << setw(20) << "Hello there.";    return 0;}

上面程序的输出如下:

1e+003

        Hello there.

注意在上面程序中控制器是如何在输入输出的链式表达式中使用的。另外,当一个控制器不需要参数的时候,例如示例程序中的endl,其后面是不需要括号的。

下面的程序演示了使用setiosflags()来设置科学计数和现实符号标记

//演示setiosflags()#include<iostream>#include <iomanip>using namespace std;int main(){    cout << setiosflags(ios::showpos)     << setiosflags(ios::scientific)    << 123 << "  " << 123.23;    return 0;}

接下来的程序演示了如何在输入字符串的时候使用ws来跳过前导空白:

//跳过前导的空白#include <iostream>using namespace std;int main(){    char s[80];    cin >> ws >> s;    cout << s;    return 0;}


原创粉丝点击