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

本文介绍了 C++ 中用于格式化输入输出的控制器及其用法。通过这些控制器可以实现如科学计数法显示、字符串对齐等效果。文章还提供了多个示例程序,帮助读者更好地理解如何使用这些控制器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本技能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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值