public member function
<locale>

std::num_put::put

iter_type put (iter_type out, ios_base& str, char_type fill, bool val) const;iter_type put (iter_type out, ios_base& str, char_type fill, long val) const;iter_type put (iter_type out, ios_base& str, char_type fill, unsigned long val) const;iter_type put (iter_type out, ios_base& str, char_type fill, double val) const;iter_type put (iter_type out, ios_base& str, char_type fill, long double val) const;iter_type put (iter_type out, ios_base& str, char_type fill, const void* val) const;
iter_type put (iter_type out, ios_base& str, char_type fill, bool val) const;iter_type put (iter_type out, ios_base& str, char_type fill, long val) const;iter_type put (iter_type out, ios_base& str, char_type fill, unsigned long val) const;iter_type put (iter_type out, ios_base& str, char_type fill, double val) const;iter_type put (iter_type out, ios_base& str, char_type fill, long double val) const;iter_type put (iter_type out, ios_base& str, char_type fill, const void* val) const;iter_type put (iter_type out, ios_base& str, char_type fill, long long val) const;iter_type put (iter_type out, ios_base& str, char_type fill, unsigned long long val) const;
格式化数值
val 格式化为字符序列并写入 out
此过程使用通过 str 对象传递的格式化选项(通过其 ios_base::fmtflags 值及其内嵌的 locale),以及 fill 作为 填充字符

该函数将格式化操作产生的字符写入由 out 指向的序列。

函数返回一个指向输出序列中最后一个写入元素之后一个位置的迭代器。

在内部,此函数仅调用虚拟受保护成员 do_put,该成员默认按照 格式指定 的格式生成序列,该格式对应于 val 参数的类型,并考虑 str格式标志字段宽度。该函数使用 str 中选定的区域设置(通过 facet numpunct)来获取格式详细信息,并在必要时(使用 ctype::widen)来扩展字符。

参数

下可用的类型
指向表示为字符序列的第一个字符的迭代器。
序列的长度应足以包含整个表达式。
成员类型 iter_type 是 facet 的迭代器类型(定义为 num_put 的第二个模板参数 OutputIterator 的别名)。默认情况下,它是 ostreambuf_iterator,允许从 basic_ostream 对象隐式转换。
str
派生自 ios_base 的类对象(通常是 *输出流对象*)。它仅用于获取格式信息。
fill
填充字符:当结果需要填充到 *字段宽度* 时,*填充字符* 用于输出插入操作。
成员类型 char_type 是 facet 的字符类型(定义为 num_put 的第一个模板参数 charT 的别名)。
val
要格式化的值。

返回值

最后写入字符之后的序列中的下一个字符。
成员类型 iter_type 是 facet 的迭代器类型(定义为 num_put 的第二个模板参数 OutputIterator 的别名)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// num_put example
#include <iostream>       // std::cout
#include <locale>         // std::locale, std::num_put, std::use_facet

int main ()
{
  std::cout.width(10);    // set field width to 10 characters

  std::use_facet<std::num_put<char> >(std::cout.getloc()).put
    (std::cout, std::cout, '0', 3.14159265);

  std::cout << '\n';

  return 0;
}

可能的输出

0003.14159


数据竞争

该对象被访问。
成功时,指向 out 的数组将被修改。

异常安全

如果抛出异常,*facet 对象* 没有任何更改,尽管某些参数可能会受到影响。

另见