gpt4 book ai didi

c++ - 防止像这样格式化大数字 "24.000.000"

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:34 24 4
gpt4 key购买 nike

我在我的 ostream 中插入了一些 int,但数字很大甚至是几年,比如 300025000123 的格式如下 3.00025.000.123

我不确定为什么会这样。可能是因为我在流中使用了 imbue("") 所以十进制数字显示为 14,53 而不是 14.53 但我评论那一行,一切都保持原样。

我只是想在外流中获取数字时去掉那些点(但我也不想去掉小数点逗号)。我该怎么做?

我想也许 iomanip 库会有所帮助,但我没有找到任何关于这种情况的信息。

std::ostream& operator <<(std::ostream& os, const Article& a) {
os << a.title() << a.pub_date().year() << ". " << a.price() << "";
return os;
}

最佳答案

如果您为数字指定自定义分组,则可以继续使用 imbue

请在此处查看示例:http://www.cplusplus.com/reference/locale/numpunct/grouping/

以这个例子为例,我们有这段代码可以验证即使设置了语言环境也没有进行任何分组。

// numpunct::grouping example
#include <iostream> // std::cout
#include <string> // std::string
#include <locale> // std::locale, std::numpunct, std::use_facet

// custom numpunct with grouping:
struct my_numpunct : std::numpunct<char> {
// the zero by itself means do no grouping
std::string do_grouping() const {return "\0";}
};

int main() {
std::locale loc (std::cout.getloc(),new my_numpunct);
std::cout.imbue(loc);
std::cout << "one million: " << 1000000 << '\n';
return 0;
}

关于c++ - 防止像这样格式化大数字 "24.000.000",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23661559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com