num_put::do_put
调用数字转换为 CharType。序列表示数字的虚函数为特定区域设置格式。
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
bool _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
long _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
unsigned long _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
double _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
long double _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
const void * _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
const long long _Val
) const; virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
const unsigned long long _Val
) const;
参数
_Next
处理插入的字符串中的第一个元素的次数的迭代器。_Iosbase
指定了用于包含的 numpunct 个标点添加的区域设置并为输出格式输出标志的流。_Fill
有关空间使用的字符。_Val
将输出的数字或布尔类型。
返回值
输出迭代器。最后一个元素外的位置生成一的地址。
备注
第虚拟的受保护成员函数生成开始在 _Next 中时序元素从值 _Val导致整数输出字段。 函数返回指定下个位置的迭代器。插入生成的整数输出字段之外的元素。
整数输出字段由打印功能使用的规则相同生成的用于生成文件为一系列 char 元素。 每个这样 char 元素由带简单,一对一的映射假定映射到 CharType 类型的等效元素。 如果打印功能填充或空间的字段或数字 0,但是,do_put 使用 fill。 确定等效的输出转换规范如下:
如果 iosbase。标志 &ios_base::basefield == ios_base::10 月规范,转换为 lo。
如果 iosbase.flags &ios_base::basefield == ios_base::hex规范,转换为 lx。
否则,将规范为 ld。
如果 iosbase。宽度 不为零,此值的字段宽度带有在前面。 函数然后调用 iosbase。调整宽度字段的width(0) 为零。
才需要元素的 N 的 最小值指定输出字段大于 iosbase,小于填充发生。宽度。 此类填充包含 N - fillwidth 复制序列。 然后填充生成如下所示:
如果 iosbase。flags &ios_base::adjustfield == ios_base::left,– 标志。预置。填充 (发生,则生成的文本之后。)
如果 iosbase.flags &ios_base::adjustfield == ios_base::internal,0 标志。预置。数字 (对于输出字段,并出现有 0 的打印函数填充) 的位置。
否则,其他标志不带有在前面。(填充时,在生成的序列。)。
最终:
如果 iosbase。flags &ios_base::showpos 是非零,+ 标志。预置转换规范。
如果 iosbase。showbaseflags & ios_base::是非零,# 标志。预置转换规范。
区域设置方面进一步确定整数输出字段的格式返回的fac 调用 use_facet <numpunct<Elem>(iosbase。getloc)。 尤其是在下列情况下:
fac。分组 确定数值如何在小数点左边任何组合
fac。thousands_sep 确定在小数点左边数字分隔任何组的顺序
如果 fac不对约束进行分组。分组 (其第一个元素的值 CHAR_MAX),然后 fac没有实例。thousands_sep 在输出字段生成。 否则,将打印,在发生后,插入分隔符。
第二个虚拟的受保护成员函数:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, unsigned long _Val) const;
行为与第一个相同,不同之处在于,它用 lu替换 ld 的转换规范。
第三虚拟的受保护成员函数:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, double _Val) const;
行为与第一个相同,不同之处是,val值导致浮点输出字段。fac。decimal_point 确定从部分数字分隔整数数字的序列。 确定等效的输出转换规范如下:
如果 iosbase。flags &ios_base::floatfield == ios_base::固定规范,转换为 lf。
如果 iosbase。flags &ios_base::floatfield == ios_base::科学规范,转换为 le。 如果 iosbase。flags &ios_base::大写 是非零,e 用 E替换。
否则,将规范为 lg。 如果 iosbase。flags &ios_base::uppercase 是非零,g 用 G替换。
如果 iosbase。flags &ios_base::fixed 是非零,则或 iosbase。精度 大于零,与 iosbase值的精度大于。precision 被预置转换规范。 所有填充相同的行为像整数输出字段。 填充字符为 fill。 最终:
如果 iosbase。flags &ios_base::showpos 是非零,+ 标志。预置转换规范。
如果 iosbase。flags &ios_base::showpoint 是非零,# 标志。预置转换规范。
第四个虚的受保护成员函数:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, long double _Val) const;
相同的行为,但第三,在转换规范的限定符用 L替换 l。
第五虚拟的受保护成员函数:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, const void *_Val) const;
同样正常运行第一个规范,除此之外,转换 p是 ###,和必要的所有限定符指定填充。
第六虚拟的受保护成员函数:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, bool _Val) const;
行为与第一个相同,但会从 _Val的布尔型输出字段。
布尔型输出字段采用两种形式之一。 如果 iosbase。flags &ios_base::boolalpha 是 false,成员函数返回 do_put(_Next、_Iosbase,_Fill,(long)_Val),通常导致生成的序列 0 (对于 false) 或 1 (对于 true)。 否则,生成的序列是任何一个 fac。falsename) (对于 false),或 fac。truename (对于 true)。
第七个虚拟的受保护成员函数:
virtual iter_type do_put(iter_type next, ios_base& iosbase,
Elem fill, long long val) const;
行为与第一个相同,不同之处在于,它用 lld替换 ld 的转换规范。
第八虚拟的受保护成员函数:
virtual iter_type do_put(iter_type next, ios_base& iosbase,
Elem fill, unsigned long long val) const;
行为与第一个相同,不同之处在于,它用 llu替换 ld 的转换规范。
示例
针对 放置参见示例,调用 do_put。
要求
页眉: <区域设置>
命名空间: std