C++ Int zerlegen

  • Themenstarter Themenstarter Shadow1911
  • Beginndatum Beginndatum
In welcher Zeile tritt der Fehler auf und was ist 'binar' (Datentyp)? Das 'c_str()' ist übrigens entbehrlich - die Klasse string hat einen operator [] definiert, der das Zeichen (char) an der angegebenen Position liefert.

Gruß
MCoder

Binar = int

Der Fehler tritt an der Stelle auf an der ich dem 'String2' die Variable 'Binar' zuweißen will.
 
Die Klasse 'string' hat keinen Konstruktur, dem ein 'int' übergeben werden kann. Spricht was dagegen, die Eingabe gleich in einen String zu schreiben?
C++:
string string2;
cin >> string2;
Andernfalls müsstest du 'binar' erst in einen String konvertieren, etwa mit Hilfe eines Stringstreams:
C++:
stringstream sstr;
sstr << binar;
string string2 = sstr.str();
Gruß
MCoder
 
Das geht auch völlig ohne String indem du den Modulo-Operator verwendest. Hatte dieselbe Aufgabe zu lösen. Indem du durch Modulo 10 rechnest trennst du durch die ganzahlige Division immer die letzte Stelle ab. Also 123456/10 ergibt 12345.6 durch %10 trennst erhältst du nur den Wert 6. Ich hab eine Funktion geschrieben, die das quasi erledigt und dann die einzelnen Zahlen summiert. Vielleicht kannst du dann mehr damit anfangen.

C++:
# include <stdio.h>

int main()
{
int zahl, ziffernsumme;
ziffernsumme=0;
int i=0;
int zaehler;

printf("\n\nDieses Programm berechnet aus einer beliebigen Zahl n die \nZiffernsumme/Quersumme\n\n");
printf("\nEingabe der Zahl: ");
scanf("%d", &zahl);
zaehler=zahl;

while(zaehler>10)
{
zaehler=zaehler/10;
i++;

for(i=0;i<zaehler;i++)
{
ziffernsumme = ziffernsumme+zahl%10;
zahl=zahl/10;
}


}
printf("Ergebnis: %d\n", ziffernsumme);

return 0;

}
.
 
substr gibt einen std::string zurück. Du hast auch den zweiten Parameter falsch, substr nimmt Index, Anzahl.

Wenn du einzelne chars im std::string ansprechen willst, kannst du den []-Operator nehmen:

char p10 = string1[10];
 
Zurück