模板类monetary主要用于钱币的格式处理。参数模板表明本地或国际钱币格式是否会被使用。其成员函数应用于类money_put和类money_get的实际使用过程中。其成员使用ios_base&、ios_base::iostate&和fill参数以及moneypunct< >和ctype< >刻面判断格式细节。
1.模板类money_get
类money_get的成员函数:
函数的作用是从表示钱币的字符串序列中抽取数值。
类money_get的虚函数:
函数的作用是从表示钱币的字符序列中抽取数值。函数返回值是一个输入型迭代器。该迭代器表示钱币输入字段的第一个元素。
函数说明:从序列s中读取字符,并按照指定的格式,分解并构造一个钱币值。
2.模板类money_put
模板类money_put的声明形式如下:
(1)成员函数put
函数的作用是将数字或字符串转换为字符序列。该字符序列用于表示钱币。
(2)类money_put的虚函数
函数的作用是将按照使用刻面moneypunct<charT,intl>指定格式,然后把字符写到s中。刻面ctype<charT>指定的字符映射,可从locale获取。参数单元被转换成宽字符序列。
对于字符缓冲区buf1和buf2,若数字中的第一个字符或缓冲区buf2等于ct.widen('-'),则对应于某格式的可用模式是调用neg_format()函数的结果;否则,对应于某格式的可用模式是调用pos_format()的结果。数字字符被写入,其余的分隔符和十进制小数点相交错,按显示顺序逐一输出。在数字中,仅仅可选的前导减号和随后的数字字符被使用。任何尾部字符可以被忽略。
提示
当且仅当表达式(str.flags()&str.showbase)结果是非零时,货币标识可以被产生。如果产生的字符数目小于str.width()函数的返回值,参数fill的副本被自动设置指定的宽度,作为垫衬。对于值af等于(str.flags()&str.adjustfield),如果(af==str.internal)是true,那么参数fill代表的填充字符被放入none或space显示的格式模式。如果(af==str.left)是true,那么参数fill代表的填充字符被放入其他字符之后;反之,它们被放入其他字符之前。
函数返回的迭代器指向最后一个字符之后。
3.模板类money_punct
模板类money_punct的声明形式为:
刻面moneypunct< >使用money_get< >和money_put< >定义了钱币的格式参数。钱币格式是4个组件的序列,由模式pattern确定。static_cast<part>判断格式的第i个组件。在模式对象的域中,每个值或者空格或者none会正确显示一次。在none或空格显示位置,空格是被允许的。空格表示至少需要一个空格。标识symbol显示的地方,通过curr_symbol()返回的字符序列是允许的,也是必需的。在符号出现的位置,字符序列中的第一个符号是通过positive_sign()函数和negative_sign()返回的。关于符号序列的任何保留字符也是必需的。在值value显示的地方,绝对的钱币值是必需的。
钱币的数值是一个十进制数。
如果frac_digits()函数返回一个正值或value::=units。否则,标识被定义为以下形式:
标识adigit是ct.widen(c)任意值,其中c在0~9内。ct是一个const ctype<chart>&类型的引用。标识thousands-sep是函数thousands_sep()返回的字符。使用的空格字符是t.widen(‘’)的值。白空格(WhiteSpace)字符c是可以使函数is(space,c)返回true的字符。十进制小数点后面的数字数目是通过frac_digits()函数返回的精确值。
thousands-separator(分隔符)的位置是由grouping()函数返回值决定的。
1)类moneypunct的成员函数
函数返回一个locale类对象元素。该元素用于表示十进制小数点。(www.xing528.com)
函数返回一个locale类对象元素。该元素用作分隔符。
函数返回一个locale类对象元素。该元素用于判断数字是如何被分组的。
函数返回一个locale类对象的元素。该元素用于表示钱币的标识。
函数返回一个locale对象的元素。该元素用于表示正号(“+”)。
函数返回一个locale类对象的元素。该元素用于表示负号(“-”)。
函数返回一个locale类对象的元素。该元素用于表示小数点右边显示的数字数目。
函数返回指定的locale类对象规则。该规则用于格式化输出正的数量。
函数返回指定的locale类对象规则。该规则用于格式化输出负的数量。
每个函数返回相应调用该虚函数的结果。
2)类moneypunct的虚函数
函数返回值是基数(根)分隔符。该分隔符用于防止do_frac_digits()大于0。
函数返回值是数字分组的分隔符。该分隔符用于以do_grouping()确定一个数字分组模式。
函数用于确定十进制小数点左边的数字的规则。
函数返回用于表示钱币的元素序列。
函数返回表示“正号”和“负号”标识的元素序列。
函数返回表示小数点右边的数字数量。
函数返回一个用于格式化输出正数量或负数量的规则。
4.模板类money_punct_byname
模板类money_punct_byname的声明形式如下:
例12-13
例12-13的执行结果为:
下面用例12-14来说明类moneypunct的使用方法。
例12-14
例12-14的执行结果为:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。