[c++] String to Integer

moistwanted

Erfahrenes Mitglied
Moinsen!

Tut mir ja leid für die Newbiefrage, aber ich muss sie trotzdem stellen!

Ich versuche gerade ein Programm zur Errechnung der Prüfziffer der EAN (Europäische Artikel-Nummer) zu schreiben!
Ich muss also 13 Ziffern einlesen, dies soll aber nich hintereinander sondern aufeinmal gehen!
Danach muss ich aber die zahlen einzelnd anwählen können um die Prüfziffer zuberechnen!

Also hatte ich gedacht ich lese einen String ein und konvertiere dann die einzelnen Zahlen zu Integerwerten!
vorher wollte ich zur Fehlerbekämpfung noch prüfen ob der String komplett aus Zahlen besteht!

Mein Problem ist, dass es irgendwie mit der Funktion atoi nich funktioniert!

Code:
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{   
    string ean;
    int summe=0;
    
    cin  >> ean;
    
    summe=atoi(ean.c_str());
    
    cout << summe;
    
    system("PAUSE");
    return 0;
}

Das hier war so meine Idee, aber da scheitere ich schon!
Kann mir einer helfen?

EDIT:
Ich bekomme zwar keinen Fehler angezeigt, aber die Konvertierung funktioniert trotzdem nicht

Schon mal vielen Dank im Voraus!
moistwanted
 
Zuletzt bearbeitet:
moin


Ich würde zum einlesen einfach ein char-Array nehmen, so kannst du bequem auf die einzelnen Zeichen zugreifen.

Code:
char ean[20];

cin>> ean;

for(int i=0; i<strlen(ean); i++)
{
    if(ean[i] > '9' && ean[i] < '0')
        cout<<"Nummer besteht nicht nur aus Ziffern";
}

Statt
Code:
if(ean[i] > '9' && ean[i] < '0')
kannst du auch
Code:
if(!isdigit(ean[i])
benutzen, aber von Hand ist das doch viel schöner und isdigit macht eh nichts anderes.


mfg
umbrasaxum
 
Mein Problem ist dann aber, das ich nicht mit den Zahlen rechnen kann!

Oder geht das mit dem atoi bei dem Chararray?
 
moin


Ja das geht!
Entweder:
Code:
int zahl = atoi(ean);


mfg
umbrasaxum
 
Zuletzt bearbeitet:
Also das erste funktioniert bei mir aber das zweite irgendwie nicht!

Er sagt immer:
invalid conversion from `char' to `const char*'

und
initializing argument 1 of `int atoi(const char*)'
 
moin


Ja, mein Fehler, aber für einzelne Ziffern kannst du auch ein
Code:
int ziffer = ean[3] - 48;
machen.


mfg
umbrasaxum
 
Zurück