【问题标题】:Format thousands separator格式化千位分隔符
【发布时间】:2016-11-16 15:27:58
【问题描述】:

我在 Visual Studio 2010 中使用 mfc 进行 c++ 编程。

我住在欧洲,所以我的 PC 区域设置不是美国而是欧洲。

我使用 CString 的 .Format 函数打印计算结果,我想在十万之间添加一个小数点作为分隔符。

例如,我想显示 23.400 而不是 23400

是否可以使用特定的 % 格式或者我必须更改电脑的设置?

感谢您的帮助

【问题讨论】:

    标签: c++ mfc


    【解决方案1】:

    据我所知,CString 的 .Format 不支持这个。

    我会使用stringstream 来处理格式:

    std::ostringstream temp;
    temp.imbue(std::locale(""));
    
    temp << 23400;
    
    CString result = temp.str().c_str();
    

    像我在这里所做的那样指定一个空字符串作为语言环境的名称意味着它应该从操作系统中获取语言环境设置。您可以改用特定语言环境的名称(例如,如果您想要特定语言环境,无论操作系统如何配置):

    temp.imbue(std::locale("de")); // German locale
    

    【讨论】:

      【解决方案2】:

      据我所知,这是您正在寻找的。谷歌上的简单搜索给出了答案。顺便说一下,这种类型的印刷品 (%.2f) 在几乎所有现代语言中都是相当标准的。

      "Floating point: %.2f\n"

      https://msdn.microsoft.com/en-us/library/aa314327(v=vs.60).aspx

      【讨论】:

      • '%.2f' 格式字符意味着只显示 2 个十进制数。这不是我问的。我想要一个 。作为 tousand 和 percent 之间的分隔符,而不是整数和小数
      猜你喜欢
      • 2015-02-28
      • 1970-01-01
      • 2018-09-05
      • 2022-07-31
      • 2016-10-07
      • 2011-03-12
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多