std::setfill

来自cppreference.com
< cpp‎ | io‎ | manip
 
 
 
输入/输出操纵符
浮点格式化
整数格式化
布尔格式化
域宽与填充控制
setfill
其他格式化
空白符处理
输出冲入
状态标志操纵
时间与金钱 I/O
(C++11)
(C++11)
(C++11)
(C++11)
带引号操纵符
(C++14)
 
在标头 <iomanip> 定义
template< class CharT >
/*未指定*/ setfill( CharT c );

用于表达式 out << setfill(c) 时,它设置流 out 的填充字符为 c

参数

c - 填充字符的新值

返回值

一个满足以下条件但未指定类型的对象:

  • 如果 out 是具有 std::basic_ostream<CharT, Traits> 类型的对象,那么表达式 out << setfill(c)
    • 具有 std::basic_ostream<CharT, Traits>& 类型
    • 值为 out
    • 行为如同调用 f(out, c)

其中函数 f 定义如下:

template<class CharT, class Traits>
void f(std::basic_ios<CharT, Traits>& str, CharT c)
{
    // 设置填充字符
    str.fill(c);
}

注意

可以使用 std::ostream::fill 获得当前填充字符。

示例

#include <iostream>
#include <iomanip>
 
int main()
{
    std::cout << "默认填充:     " << std::setw(10) << 42 << '\n'
              << "setfill('*'):" << std::setfill('*')
                                  << std::setw(10) << 42 << '\n';
}

输出:

默认填充:             42
setfill('*'):********42

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 183 C++98 setfill 只能用于具有 std::ostream 类型的流 可以用于所有输出字符流

参阅

管理填充字符
(std::basic_ios<CharT,Traits> 的公开成员函数)
设置填充字符的布置
(函数)
更改下个输入/输出域的宽度
(函数)