2013-10-20 69 views
-1

我想让用户输入为一个C字符串“xxx,xxx,xxx.xx”(x's是数字)。所以如果我输入“343,111,222.00”,那么输出将完全相同。所以问题是,这是如何完成的?我想我想要做的是,如果用户放置“123456”,那么输出自动输入“123,456.00”。任何建议/提示/批评表示赞赏。C++输入逗号和十进制

#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; 
} 
+0

看一看http://stackoverflow.com/questions/7276826/c-format-number-with - 可以看看你怎么能做到这样的事情:) – yamafontes

+0

好的,将检查出来,谢谢。 – Christian

回答

0

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

  1. 如何总是与恰好两位小数的十进制数。在回答这个问题是建立在流使用fixed格式和精度为2:

    std::cout << std::setprecision(2) << std::fixed; 
    
  2. 问题的其他部分似乎问如何创建千位分隔符。在回答这个问题是使用std::locale用合适的std::numpunct<char>方面,如:

    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'; 
    } 
    
+0

感谢您的回复。我有很多要学习的。感谢您对每个代码的解释。 – Christian

相关问题