Question

J'ai une chaîne qui contient (les chiffres de) une valeur entière et je veux obtenir cette valeur en tant qu'int. Je suis conscient qu'il existe d'autres méthodes pour cela, telles que atoi () ; Cependant, j'aimerais vraiment utiliser glib pour faire cela. Une telle fonction d’analyse / conversion existe-t-elle?

Était-ce utile?

La solution

GLib fournit une grande partie de la bibliothèque C standard avec des contrôles de sécurité pour les entrées et des améliorations lorsque cela est possible.

La fonction recherchée est g_ascii_strtoll () .

Addenda Pedantic

atoi () traite les paramètres régionaux de la même manière que strtol AND g_ascii_strtoll () . Une lecture très attentive des pages de manuel et de la documentation Glib le révélera. Voici quelques extraits pour ceux qui ne peuvent pas RTFM :

atoi ()

La fonction atoi () convertit la partie initiale de la chaîne pointée par nptr en int. Le comportement est le même que strtol (nptr, (char **) NULL, 10); sauf que atoi () ne détecte pas les erreurs.

strtol ()

Dans les paramètres régionaux autres que le "C" locale, d'autres chaînes peuvent également être acceptées. (Par exemple, le séparateur de milliers de l'environnement local actuel peut être pris en charge.)

g_ascii_strtoll ()

Convertit une chaîne en une valeur gint64. Cette fonction se comporte comme la fonction standard strtoll () dans les paramètres régionaux C. Cela se fait sans changer réellement les paramètres régionaux en cours, car cela ne serait pas thread-safe.

Changer les paramètres régionaux

Si cela ne suffit pas, vous pouvez définir les paramètres régionaux à l'aide de variables d'environnement et / ou d'appels explicites à setlocale ()

Autres conseils

GLib est une bibliothèque à usage général qui fournit une base commune pour développer des applications. Cela ne signifie pas que GLib réimplémente toute la bibliothèque C standard, mais qu'elle résume tout ce qui n'est pas disponible (ou pas cohérent) sur toutes les plateformes prises en charge.

Donc, en bref, vous devez utiliser la fonction standard atoi () : GLib implémente uniquement les variantes gdouble et gint64 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top