C ++ Ввод запятых и десятичных

я предполагаю, чтобы позволить пользователю вводить в виде строки c «ххх, ххх, ххх.хх» (х — цифры). Поэтому, если я введу «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;
}

-1

Решение

Кажется, твой вопрос состоит из двух частей:

  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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]