【问题标题】:C++ Inputting Comma's and DecimalC++ 输入逗号和小数
【发布时间】:2013-10-29 05:43:23
【问题描述】:

我假设允许用户输入为 c 字符串“xxx,xxx,xxx.xx”(x 是数字)。因此,如果我输入“343,111,222.00”,那么输出将完全相同。所以问题是这是否是这样做的?我想我想做的是,如果用户输入“123456”,那么输出会自动输入“123,456.00”。任何建议/提示/批评表示赞赏。

    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <string>
 int main() {

    using namespace std;
char myStr[256];    
    char tempStr[256];
    double sum = 0; //Adding sum soon.
    int decreaseDist;

    cout << "Enter Any integers ";
     cin.getline(myStr,256);
    cout << endl;

    int finalCount = 0;

int i;
    long distToDot = tempStr[256] - 3;


for(i=0; myStr[i] != '\0'; i++) {
            putchar(myStr[i]);
            decreaseDist = distToDot = i;

    if(i !=0 && decreaseDist > 0 && decreaseDist % 3== 0)
                    {
                    tempStr[finalCount++] = ',';
            }

            tempStr[finalCount++] = myStr[i];
    }
    tempStr[finalCount] = '\0';

    return 0;
}

【问题讨论】:

标签: c++ comma cstring digits


【解决方案1】:

看来,你的问题有两个部分:

  1. 十进制数字如何总是以两个小数位显示。这个问题的答案是将流设置为使用fixed 格式和2 的精度:

    std::cout << std::setprecision(2) << std::fixed;
    
  2. 问题的另一部分似乎是在询问如何创建千位分隔符。这个问题的答案是使用std::locale 和一个合适的std::numpunct&lt;char&gt; facet,例如:

    struct numpunct
        : std::numpunct<char> {
        std::string do_grouping() const { return "\3"; }
    };
    int main() {
        std::cout.imbue(std::locale(std::locale(), new numpunct));
        std::cout << double(123456) << '\n';
    }
    

【讨论】:

  • 感谢您的回复。我有很多要学习的。感谢您对每个代码的解释。
猜你喜欢
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 2014-07-24
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 2011-09-26
相关资源
最近更新 更多