有一个关于打印带有千位/百万位分隔符的整数的问题。
我有一个文本文件,其中包含国家、城市和总人口。
我必须阅读文件,并按国家排序。如果国家/地区是平等的,我必须按人口降序排序。
文本文件是这样的:
澳大利亚........悉尼.......10.123.456
巴西.............圣保罗.......7.123.345
我将所有 3 个读入一个单独的字符串。然后我删除所有“。”在人口字符串中。然后我使用 atoi() 将人口字符串转换为整数。
现在,如果国家/地区相等,我可以按人口排序。这种排序工作正常。
到目前为止一切顺利。但我需要将千/百万分隔符放入人口的打印中。
如果我使用字符串,带有“.”对于人口,排序不能正常工作。 它的排序如下:
x.......x......1.123456
x.......x......10.123.456
x.......x......2.123.232
它必须看起来像:
澳大利亚........悉尼.......10.123.456
澳大利亚........布里斯类.......8.123.456
有没有办法通过再次在 int 中添加分隔符来操纵打印?
非常感谢
最佳答案
imbue()
带有 locale 的输出流具有所需的分隔符。例如:
#include <iostream>
#include <locale>
int main()
{
// imbue the output stream with a locale.
int i = 45749785;
std::cout << i << "\n";
std::cout.imbue(std::locale(""));
std::cout << i << "\n";
}
我机器上的输出(和 online demo ):
45749785 45,749,785
正如 James Kanze 评论和回答的那样灌输输入流也可以读取分离的 int
值,而无需手动修改输入。
参见 Stroustrop 的 Appendix D: Locales以获得语言环境的详细概述。
关于c++ - 打印带有千位和百万位分隔符的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17530408/