Veröffentlicht 23. Juni 200817 j Hi hab folgendes problem, ich versuche eine Zeichenkette in ein integer umzuwandeln um sie dan anschließen in eine funktion zu übergeben doch es klapt nicht ganz, ich hab gedacht es müsste mit atoi oder strtoint .c_str klappen, jedoch klappt es nicht ganz, es tritt immer mindestens ein Fehler bei auf. Posting: string Seriennummer; string ZehnStelligeNummer; int Pruefziffer; cin >> Seriennummer; ZehnStelligeNummer = Seriennummer.substr(1,10); Pruefziffer = ????(ZehnStelligeNummer) Mein Problem ist hier wo die Fragezeichen sind. Bin dankbar für jede hilfe und danke im vorraus.
23. Juni 200817 j Hi hab folgendes problem, ich versuche eine Zeichenkette in ein integer umzuwandeln um sie dan anschließen in eine funktion zu übergeben doch es klapt nicht ganz, ich hab gedacht es müsste mit atoi [...] Das sollte doch eigentlich gehen?! Was tritt denn für ein Fehler auf? Notfalls funktioniert in C++ auch noch die Verwendung von Stringstreams als umwandlung in ein Int
23. Juni 200817 j Notfalls funktioniert in C++ auch noch die Verwendung von Stringstreams als umwandlung in ein IntNotfalls? Ich finde, das sollte der Standardweg sein
23. Juni 200817 j Nun, atoi ist eine Standardfunktion, daher ist der aufruf dort ja einfacherer und bestimmt auch schneller, bevor ich jetzt erst ein Stringstreamobjekt anlegen muss, diesem einen String zuweise und dann mittels Shiftoperator das in eine Variable pack. Aber ok, Geschmackssache auf Grund der übersichtlichkeit würd ich hier einfach zu atoi greifen.
23. Juni 200817 j Also wenn ich folgendes eingebe .... ... ... Pruefziffer = atoi(ZehnStelligeNummer); ............ ....... ..... dan taucht folgender Fehler auf: error C2664: 'atoi' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
23. Juni 200817 j istringstream stream( ZehnStelligeNummer ); stream >> Pruefziffer;[/CODE] Du brauchst dafür #include <sstream>.
23. Juni 200817 j Super Danke hat geklappt, echt nett von euch . Noch eine letzte frage, gibt es auch eine andere möglichkeit oder ist das die einzigste um das Problem zu lösen, weil wir haben in der Schule noch nicht wirklich viel mit streams gemacht..?? Danke nochmals LG
23. Juni 200817 j Noch eine letzte frage, gibt es auch eine andere möglichkeit oder ist das die einzigste um das Problem zu lösen, weil wir haben in der Schule noch nicht wirklich viel mit streams gemacht..??Noch kein cin oder cout benutzt? Das sind Stream-Objekte Was du suchst, ist vermutlich Pruefziffer = atoi(ZehnStelligeNummer.c_str()); Das ist aber eher eine Krücke als eine Lösung, IMHO.
23. Juni 200817 j mit sscanf geht's im übrigen auch schön, hab ich grad festgestellt. evtl. wäre vielleicht eine Prüfung vorher sinnvoll (auch bei atoi), ob es sich überhaupt in eine Zahl konvertieren lässt.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.