Zeichenfolge in Ganzzahl konvertieren
15.03.2009Eine ziemlich häufiges Problem bei der Anwendungsentwicklung ist die Umwandlung von Zeichenfolgen in eine Ganzzahl zur Weiterverarbeitung. Bei C oder C++ ist atoi() der einfachste Weg, um vom char array zum int zu kommen. Leider ermöglicht atoi() keine präzise Fehlererkennung, weil eine ungültige Eingabe ebenso wie die korrekte Eingabe "0" zum Ergebnis "0" führt:
$ cat atoi.c
#include
Teste atoi() Test | Instruktionen | Ergebnis ----------------+-----------------+---------------- >4< | 883 | 4 >42< | 903 | 42 >4\n2< | 894 | 4 >424242< | 983 | 424242 > 42 < | 920 | 42 >answer: 42< | 867 | 0 >2147483648< | 1063 | -2147483648 >-2147483649< | 1064 | 2147483647 >\n42\n< | 920 | 42 Teste strtol() Test | Instruktionen | Ergebnis ----------------+-----------------+---------------- >4< | 921 | 4 >42< | 941 | 42 >4\n2< | 932 | 4 >424242< | 1021 | 424242 > 42 < | 958 | 42 >answer: 42< | 912 | 0 >2147483648< | 1101 | 2147483648 >-2147483649< | 1102 | -2147483649 >\n42\n< | 958 | 42
In den meisten Fällen wird die zusätzliche Rechenzeit wohl vernachlässigbar klein sein.