Wie konvertiert man eine Zeichenkette in Integer in C?
Ich bin versucht, herauszufinden, ob es eine alternative Möglichkeit der Umwandlung von string zu integer in C.
Ich regelmäßig Muster die folgenden in meinem code.
char s[] = "45";
int num = atoi(s);
So, gibt es eine bessere Möglichkeit oder einen anderen Weg?
InformationsquelleAutor der Frage user618677 | 2011-08-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist
strtol
was ist besser IMO. Auch ich habe den Geschmack gekommen instrtonum
so verwenden Sie es, wenn Sie es haben (aber denken Sie daran, es ist nicht tragbar):BEARBEITEN
Könnten Sie auch interessieren
strtoumax
undstrtoimax
die standard-Funktionen im C99. Zum Beispiel könnten Sie sagen:Sowieso, bleiben Sie Weg von
atoi
:InformationsquelleAutor der Antwort cnicutar
Robuste C89
strtol
-basierte LösungMit:
atoi
Familie)strtol
(z.B. keine führenden Leerzeichen noch nachfolgende trash chars)GitHub upstream.
Basierend auf: https://stackoverflow.com/a/6154614/895245
InformationsquelleAutor der Antwort Ciro Santilli 新疆改造中心 六四事件 法轮功
Nicht die Funktionen aus
ato...
Gruppe. Diese defekt sind und praktisch nutzlos. Eine mäßig bessere Lösung wäre die Verwendungsscanf
obwohl es auch nicht perfekt.Konvertieren von string zu integer, Funktionen von
strto...
Gruppe verwendet werden soll. In Ihrem speziellen Fall wäre esstrtol
Funktion.InformationsquelleAutor der Antwort AnT
Können Sie code ein wenig atoi() for fun:
Können Sie machen es auch rekursive wich kann alt in 3 Zeilen =)
InformationsquelleAutor der Antwort jDourlens
Wollte nur zu teilen, eine Lösung für unsigned long aswell.
InformationsquelleAutor der Antwort Jacob
Können Sie immer Rollen Sie Ihre eigenen!
Dies zu tun, was Sie wollen, ohne Kabelgewirr.
InformationsquelleAutor der Antwort ButchDean
Diese Funktion wird Ihnen helfen,
Ref: http://amscata.blogspot.com/2013/09/strnumstr-version-2.html
InformationsquelleAutor der Antwort Amith Chinthaka
Ok, ich hatte das gleiche problem.Ich kam mit dieser Lösung.Es war für mich das beste.Ich habe versucht, atoi (), aber hat nicht funktioniert gut für mich.So, hier ist meine Lösung:
InformationsquelleAutor der Antwort Khaled Mohammad
InformationsquelleAutor der Antwort Aditya Kumar
Ja, Sie können die Speicherung der integer-direkt:
Wenn Sie Parsen einen string,
atoi
oderstrol
wird gewinnen "kürzester-code" - Wettbewerb.InformationsquelleAutor der Antwort Yann Ramin
In C++ können Sie eine solche Funktion:
Dies kann Ihnen helfen zu konvertieren eine beliebige Zeichenfolge zu jedem Typ float, int, double...
InformationsquelleAutor der Antwort neodelphi