std::num_put::put, std::num_put::do_put

来自cppreference.com
< cpp‎ | locale‎ | num put

 
 
本地化库
语言环境方面
原文:
Locales and facets
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
locale
字符分类
原文:
Character classification
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
转换
原文:
Conversions
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
wstring_convert(C++11)
wbuffer_convert(C++11)
小面类的基类
原文:
Facet category base classes
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
小面类
原文:
Facet categories
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
特定于语言环境的方面
原文:
Locale-specific facets
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
代码转换方面
原文:
Code conversion facets
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
codecvt_utf8(C++11)
codecvt_utf16(C++11)
codecvt_utf8_utf16(C++11)
codecvt_mode(C++11)
C语言环境
原文:
C locale
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
 
std::num_put
成员函数
原文:
Member functions
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
num_put::num_put
num_put::~num_put
num_put::put
num_put::do_put
 
在头文件 <locale> 中定义
public:

iter_type put( iter_type out, std::ios_base& str, char_type fill, bool v) const;
iter_type put( iter_type out, std::ios_base& str, char_type fill, long v) const;
iter_type put( iter_type out, std::ios_base& str, char_type fill, long long v) const;
iter_type put( iter_type out, std::ios_base& str, char_type fill, unsigned long v) const;
iter_type put( iter_type out, std::ios_base& str, char_type fill, unsigned long long v) const;
iter_type put( iter_type out, std::ios_base& str, char_type fill, double v) const;
iter_type put( iter_type out, std::ios_base& str, char_type fill, long double v) const;

iter_type put( iter_type out, std::ios_base& str, char_type fill, const void* v) const;
(1)
protected:

iter_type do_put( iter_type out, std::ios_base& str, char_type fill, bool v) const;
iter_type do_put( iter_type out, std::ios_base& str, char_type fill, long v) const;
iter_type do_put( iter_type out, std::ios_base& str, char_type fill, long long v) const;
iter_type do_put( iter_type out, std::ios_base& str, char_type fill, unsigned long) const;
iter_type do_put( iter_type out, std::ios_base& str, char_type fill, unsigned long long) const;
iter_type do_put( iter_type out, std::ios_base& str, char_type fill, double v) const;
iter_type do_put( iter_type out, std::ios_base& str, char_type fill, long double v) const;

iter_type do_put( iter_type out, std::ios_base& str, char_type fill, const void* v) const;
(2)
1)
公共成员函数,调用受保护的最派生类的虚成员函数do_put的.
原文:
public member function, calls the protected virtual member function do_put of the most derived class.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
2)
将字符写入到输出序列out代表的价值v,格式所要求的格式标志str.flags()及充满流中的std::numpunctstd::ctypestr方面的语言环境。这个函数被调用的所有格式的输出流的运营商,如std::cout << n;.
原文:
writes characters to the output sequence out which represent the value of v, formatted as requested by the formatting flags str.flags() and the std::numpunct and std::ctype facets of the locale imbued in the stream str. This function is called by all formatted output stream operators, such as std::cout << n;.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
转换发生在四个阶段
原文:
Conversion occurs in four stages
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

目录

[编辑] 第1阶段:转换符的选择

  • I / O格式的标志,如果获得
    原文:
    I/O format flags are obtained, as if by
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
fmtflags basefield = (str.flags() & std::ios_base::basefield);
fmtflags uppercase = (str.flags() & std::ios_base::uppercase);
fmtflags floatfield = (str.flags() & std::ios_base::floatfield);
fmtflags showpos = (str.flags() & std::ios_base::showpos);
fmtflags showbase = (str.flags() & std::ios_base::showbase);
  • 如果类型vbool
    原文:
    If the type of v is bool
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • *如果boolalpha == 0,然后将其转换v输入int和执行整数输出.
    原文:
    * If boolalpha == 0, then converts v to type int and performs integer output.
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • *如果boolalpha != 0获得std::use_facet<std::numpunct<charT>>(str.getloc()).truename()如果v == truestd::use_facet<std::numpunct<charT>>(str.getloc()).falsename()如果v == false,并输出该字符串中的每个连续字符cout*out++ = c。没有进一步的处理工作是在这种情况下,该函数返回out.
    原文:
    * If boolalpha != 0 obtains std::use_facet<std::numpunct<charT>>(str.getloc()).truename() if v == true or std::use_facet<std::numpunct<charT>>(str.getloc()).falsename() if v == false, and outputs each successive character c of that string to out with *out++ = c. No further processing is done in this case, the function returns out.
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • 如果类型的v是一个整数类型,第一个适用的选择:选择以下五个
    原文:
    If the type of v is an integer type, the the first applicable choice of the following five is selected:
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
如果basefield == oct,将使用转换符%o
原文:
If basefield == oct, will use conversion specifier %o
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
如果basefield == hex && !uppercase,将使用转换符%x
原文:
If basefield == hex && !uppercase, will use conversion specifier %x
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
如果basefield == hex,将使用转换符%X
原文:
If basefield == hex, will use conversion specifier %X
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
如果v签署,将使用转换符%d
原文:
If the type of v is signed, will use conversion specifier %d
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
如果是无符号的类型v,将使用转换符%u
原文:
If the type of v is unsigned, will use conversion specifier %u
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • 对于整数类型,长度修改器添加到转换规范,如果必要的:llongunsigned longlllong longunsigned long long.
    原文:
    For integer types, length modifier is added to the conversion specification if necessary: l for long and unsigned long, ll for long long and unsigned long long.
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • v的浮点类型的类型,第一个适用的选择:选择以下五个
    原文:
    If the type of v is a floating-point type, the the first applicable choice of the following five is selected:
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
如果floatfield == std::ios_base::fixed,将使用转换符%f
原文:
If floatfield == std::ios_base::fixed, will use conversion specifier %f
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
如果floatfield == std::ios_base::scientific && !uppercase,将使用转换符%e
原文:
If floatfield == std::ios_base::scientific && !uppercase, will use conversion specifier %e
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
如果floatfield == std::ios_base::scientific,将使用转换符%E
原文:
If floatfield == std::ios_base::scientific, will use conversion specifier %E
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
如果floatfield == (std::ios_base::fixed | std::ios_base::scientific) && !uppercase,将使用转换符%a(C++11 起)
原文:
If floatfield == (std::ios_base::fixed | std::ios_base::scientific) && !uppercase, will use conversion specifier %a (C++11 起)
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
如果floatfield == std::ios_base::fixed | std::ios_base::scientific,将使用转换符%A(C++11 起)
原文:
If floatfield == std::ios_base::fixed | std::ios_base::scientific, will use conversion specifier %A (C++11 起)
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
如果!uppercase,将使用转换符%g
原文:
If !uppercase, will use conversion specifier %g
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
否则,将使用转换符%G
原文:
otherwise, will use conversion specifier %G
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • *如果类型vlong double,长度修饰符L被添加到转换符.
    原文:
    * If the type of v is long double, the length modifier L is added to the conversion specifier.
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • *此外,如果floatfield != (ios_base::fixed | ios_base::scientific),再精密的改性剂添加,设置str.precision()
    原文:
    * Additionally, if floatfield != (ios_base::fixed | ios_base::scientific), then precision modifier is added, set to str.precision()
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • 对于整数和浮点类型,如果showbase,改性剂#前缀。如果showpos设置,在修改+前缀.
    原文:
    For both integer and floating-point types, if showbase is set, the modifier # is prepended. If showpos is set, the modifier + is prepended.
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • 如果vvoid*,将使用转换符%p
    原文:
    If the type of v is void*, will use conversion specifier %p
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • 如果一个窄字符串被创建为调用std::printf(spec, v)中的“C”语言环境,spec是所选择的转换说明.
    原文:
    A narrow character string is created as if by a call to std::printf(spec, v) in the "C" locale, where spec is the chosen conversion specifier.
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 第2阶段:区域设置特定的转换

  • 在阶段1中,以及其他比小数点c,获得的每个字符都'.'转换CharT通过调用std::use_facet<std::ctype<CharT>>(str.getloc()).widen(c).
    原文:
    Every character c obtained in Stage 1, other than the decimal point '.', is converted to CharT by calling std::use_facet<std::ctype<CharT>>(str.getloc()).widen(c).
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • 算术类型,千位分隔符的字符,得到了从std::use_facet<std::numpunct<CharT>>(str.getloc()).thousands_sep(),插入的顺序,根据所提供的分组规则std::use_facet<std::numpunct<CharT>>(str.getloc()).grouping()
    原文:
    For arithmetic types, the thousands separator character, obtained from std::use_facet<std::numpunct<CharT>>(str.getloc()).thousands_sep(), is inserted into the sequence according to the grouping rules provided by std::use_facet<std::numpunct<CharT>>(str.getloc()).grouping()
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • 小数点字符('.')所取代std::use_facet<std::numpunct<CharT>>(str.getloc()).decimal_point()
    原文:
    Decimal point characters ('.') are replaced by std::use_facet<std::numpunct<CharT>>(str.getloc()).decimal_point()
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 第3阶段:填充

  • 得到调整标志犹如std::fmtflags adjustfield = (flags & (std::ios_base::adjustfield))和检查,以识别填充的位置,如下所示
    原文:
    The adjustment flag is obtained as if by std::fmtflags adjustfield = (flags & (std::ios_base::adjustfield)) and examined to identify padding location, as follows
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
如果adjustfield == std::ios_base::left,将垫后
原文:
If adjustfield == std::ios_base::left, will pad after
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
如果adjustfield == std::ios_base::right,会前垫
原文:
If adjustfield == std::ios_base::right, will pad before
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
adjustfield == std::ios_base::internal的代表性和符号字符时,将垫后签收
原文:
If adjustfield == std::ios_base::internal and a sign character occurs in the representation, will pad after the sign
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
如果以0x或0X开始adjustfield == std::ios_base::internal第1阶段表示,将垫在x或X
原文:
If adjustfield == std::ios_base::internal and Stage 1 representation began with 0x or 0X, will pad after the x or X
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
否则,会前垫
原文:
otherwise, will pad before
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • 如果str.width()是非零的(例如std::setw,只是使用)和的数目为CharT的第2阶段后比str.width()少,然后fill字符的副本被插入在表示通过填充以使该序列的长度来str.width()的位置。
    原文:
    If str.width() is non-zero (e.g. std::setw was just used) and the number of CharT's after Stage 2 is less than str.width(), then copies of the fill character are inserted at the position indicated by padding to bring the length of the sequence to str.width().
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 第4阶段:输出

c从图表的第3阶段的顺序是每一个连续的字符输出,如果通过*out++ = c.
原文:
Every successive character c from the sequence of CharT's from Stage 3 is output as if by *out++ = c.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 参数

out -
迭代器指向的第一个字符将被覆盖
原文:
iterator pointing to the first character to be overwritten
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
str -
流式传输给信息检索的格式
原文:
stream to retrieve the formatting information from
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
fill -
使用填充字符的结果时,需要填充的字段宽度
原文:
padding character used when the results needs to be padded to the field width
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
v -
值转换为字符串,并输出
原文:
value to convert to string and output
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 返回值

out

[编辑] 注释

前导零的转换规范#o(导致的组合std::showbasestd::oct例如)作为填充字符,不计.
原文:
The leading zero generated by the conversion specification #o (resulting from the combination of std::showbase and std::oct for example) is not counted as a padding character.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 示例

输出一个数字,使用全局locale
原文:
Output a number using global locale
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

#include <iostream>
#include <locale>
 
int main()
{
    auto &facet = std::use_facet<std::num_put<char>>(std::locale());
    facet.put(std::cout, std::cout, '0', 2.71);
    std::cout << '\n';
}

输出:

2,71

[编辑] 另请参阅

插入格式化的数据
原文:
inserts formatted data
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(公共成员函数of std::basic_ostream [edit]