string to währung

Thomasio

Erfahrenes Mitglied
Ich habe irgendwo zwischen atoi, atof und stringstream die Übersicht verloren.
Ich habe einen string, der eine ganze Zahl enthält, als Cent-Wert eines Geldbetrages.
Diesen will ich jetzt in € ausgeben, wobei er immer 2 Nachkommastellen ausgeben soll, auch wenn die 0 sind.
Ich habe 100 Sachen probiert, mit mehrmals konvertieren und Zeug, aber irgendwie haut es nicht hin.

Kann mir jemand auf die Sprünge helfen?

Code:
std::string wert1 = "0";
std::string wert2 = "10";
std::string wert3 = "101";

// wie konvertiere ich das für die Ausgabe?
// €0.00
// €0.10
// €1.01

TextOut(hdc,0,0,...,...);
 
Auf altmodisch, weil ich die Syntax von stringstreams nicht leiden kann:

int Geld = atoi( wert1.c_str() );
char Temp[200];

wsprintf( Temp, "Bitte zahlen Sie nach dem Pfeifton %d.%02d", Geld / 100, Geld % 100 );

Beachte die 02 im zweiten %d-Parameter, die füllen ggf. den Wert mit Nullen auf zwei Stellen von vorne auf.
 
Also ich arbeite lieber mit stringstream :-)

C++:
#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>

std::string FormatCurrency(std::string strValue);

int main(int argc, char* argv[])
{
    std::string wert1 = "0";
    std::string wert2 = "10";
    std::string wert3 = "101";

    std::cout << FormatCurrency(wert1) << std::endl
              << FormatCurrency(wert2) << std::endl
              << FormatCurrency(wert3) << std::endl;

    return 0;
}

std::string FormatCurrency(std::string strValue)
{
    std::stringstream sstr;

    sstr << "EUR"
         << (strValue.size() < 3 ? "0" : strValue.substr(0, strValue.size() - 2))
         << "."
         << std::setw(2)
         << std::setfill('0')
         << (strValue.size() < 3 ? strValue : strValue.substr(2));

    return sstr.str();
}
 
Vielen Dank,
über Nacht habe ich mir noch eine Lösung ganz ohne Konvertierung hingebogen.

Code:
while(wert.length() < 3)
  {
      wert = "0" + wert;
  }
wert = wert.substr(0,wert.length() - 2) + "." + wert.substr(wert.length() - 2,2);
 
Zurück