【发布时间】:2013-07-06 00:11:29
【问题描述】:
有一个关于打印带有千/百万分隔符的整数的问题。
我有一个文本文件,其中包含国家、城市、总人口。
我必须阅读文件,并按国家/地区排序。如果国家是平等的,我必须按人口降序排序。
文本文件是这样的:
澳大利亚............悉尼......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 中添加分隔符来操作打印?
提前致谢
【问题讨论】:
-
使用具有该分隔符的语言环境? (有关更多信息,请参阅 C++ localization functionality。)
-
当然它不会正确排序...您将这些数字视为字符串,这意味着
10小于7,因为1在7之前.您应该将数字保留为内部整数,并且仅在实际进行输出时将它们转换为格式化版本。 -
人口是整数。我只是使用字符串读入,然后我删除所有“。”并将它们转换为 int。