# std::moneypunct<CharT,International>::pos_format, do_pos_format, neg_format, do_neg_format

< cpp‎ | locale‎ | moneypunct

定义于头文件 `<locale>` |  |
public: pattern pos_format() const; | (1) |
public: pattern neg_format() const; | (2) |
protected: virtual pattern do_pos_format() const; | (3) |
protected: virtual pattern do_neg_format() const; | (4) |

1) 公开成员函数，调用最终导出类的成员函数 `do_pos_format` 。
2) 公开成员函数，调用最终导出类的成员函数 `do_neg_format` 。
3) 返回（ `std::money_base::format` 类型）描述正货币值格式化的格式结构。
4) 返回（ `std::money_base::format` 类型）描述负货币值格式化的格式结构。

std::moneypunct 的标准特化返回模式 {symbol, sign, none, value} 。

### 返回值

描述此 locale 所用的格式化的 `std::money_base::format` 类型对象。

### 注意

std::money_put 用 `pos_format` 格式化正值，用 `neg_format` 格式化负值，然而 std::money_get 用 `neg_format` 分析所有货币值：它假定 `neg_format` 与 `pos_format` 兼容。

### 示例

    #include <locale>
    #include <iostream>
    #include <iomanip>

    struct my_punct : std::moneypunct_byname<char, false> {
        my_punct(const char* name) : moneypunct_byname(name) {}
        pattern do_pos_format() const { return { {value, space, symbol, sign} };}
        pattern do_neg_format() const { return { {value, space, symbol, sign} };}
    };
    int main()
    {
        std::cout.imbue(std::locale("en_US.utf8"));
        std::cout << "american locale: " << std::showbase
                  << std::put_money(12345678.0) << '\n';

        std::cout.imbue(std::locale(std::cout.getloc(), new my_punct("en_US.utf8")));
        std::cout << "locale with modified moneypunct:\n"
                  << std::put_money(12345678.0)  << '\n'
                  << std::put_money(-12345678.0) << '\n';
    }

输出：

    american locale: $123,456.78
    locale with modified moneypunct:
    123,456.78 $
    123,456.78 $-

### 参阅

do_curr_symbol [虚] | 提供用作通货标识符的字符串 (虚受保护成员函数)
do_positive_sign do_negative_sign [虚] | 提供指示正或负值的字符串 (虚受保护成员函数)
do_get [虚] | 分析来自输入流的货币值 (`std::money_get<CharT,InputIt>` 的虚受保护成员函数)
do_put [虚] | 格式化货币值并写入到输出流 (`std::money_put<CharT,OutputIt>` 的虚受保护成员函数)