小编Jon*_*ton的帖子

使用GCC时,std :: put_money不输出零值

当货币值为零时,std :: put_money不会按预期输出'0'字符.我找不到任何解释这种行为的东西.

例:

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    cout.imbue(locale(""));
    cout << showbase << put_money(0.0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望输出为"£0.00"(取决于语言环境),但我得到"£.00"

最终,为零值添加一个特殊情况并不是太麻烦,但这种行为对我来说仍然没有意义.这是什么原因(假设它是故意的),除了单独处理零,还有任何简单的解决方法吗?

更新

这似乎是编译器特定的,我有报告说它与clang和VS一样正常工作,所以可能gcc/g ++具体(版本4.9准确,但其他版本似乎显示相同的行为)

c++ gcc g++ std iomanip

6
推荐指数
1
解决办法
267
查看次数

标签 统计

c++ ×1

g++ ×1

gcc ×1

iomanip ×1

std ×1