我想允许用户输入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;
}
答案 0 :(得分:0)
看来,你的问题有两个部分:
十进制数如何始终以正好两位小数显示。这个问题的答案是设置流以使用fixed
格式和精度2:
std::cout << std::setprecision(2) << std::fixed;
问题的另一部分似乎在问如何创建数千个分隔符。这个问题的答案是使用具有合适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';
}