Frage

Ich habe eine Zeichenfolge, die (die Ziffern) einen ganzzahligen Wert enthält, und ich möchte diesen Wert als int erhalten. Ich bin mir bewusst, dass es andere Methoden, um diesen wie atoi() tun; aber ich würde das wirklich gerne glib verwenden zu tun. Gibt es eine solche Analyse / Konvertierungsfunktion gibt es?

War es hilfreich?

Lösung

Glib bietet viel von der Standard-C-Bibliothek mit Sicherheitsüberprüfungen für die Eingabe und Erweiterungen, wo praktisch.

Die Funktion, die Sie suchen ist g_ascii_strtoll() .

Pedantic Nachtrag

atoi() behandelt locale die gleiche Art und Weise wie strtol UND g_ascii_strtoll(). Eine sehr sorgfältige Lektüre des manpages und Glib Dokumentation wird zeigt dies. Hier sind einige Auszüge für diejenigen, die nicht RTFM :

atoi()

Die atoi () Funktion wandelt der Anfangsabschnitt des String, auf die zu nptr Int. Das Verhalten ist das gleiche wie strtol(nptr, (char **) NULL, 10); außer dass atoi () keine Fehler erkennen.

strtol()

In Gegenden andere als die locale „C“ kann auch andere Saiten auch akzeptiert werden. (Zum Beispiel können die Tausender-Trennzeichen des aktuellen Locale unterstützt werden.)

g_ascii_strtoll()

Wandelt einen String in einem gint64 Wert. Diese Funktion verhält sich wie die Standard strtoll () Funktion in der C-locale tut. Es tut dies, ohne tatsächlich das aktuelle Gebietsschema zu ändern, da diese nicht Thread-sicher sein würden.

Ändern locale

Wenn dies nicht sans-locale genug ist, können Sie das Gebietsschema durch Umgebungsvariablen können, und / oder explizite Anrufe auf setlocale()

Andere Tipps

GLib ist eine Allzweck-Bibliothek, die eine gemeinsame Basis zur Entwicklung von Anwendungen zur Verfügung stellt. Dies bedeutet nicht, GLib reimplementiert alle Standard-C-Bibliothek, sondern abstrahiert was auch immer nicht verfügbar (oder nicht konsistent) über alle unterstützten Plattformen.

Also, kurz gesagt, müssen Sie den Standard atoi() Funktion: GLib implementiert nur die gdouble und gint64 Varianten

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top