Pregunta

Tengo una cadena que contiene (los dígitos de) un valor entero, y quiero obtener este valor como int. Soy consciente de que existen otros métodos para hacerlo, como atoi () ; sin embargo, realmente me gustaría usar glib para hacer esto. ¿Existe tal función de análisis / conversión?

¿Fue útil?

Solución

GLib proporciona gran parte de la biblioteca C estándar con comprobaciones de seguridad para la entrada y mejoras cuando sea práctico.

La función que está buscando es g_ascii_strtoll () .

Anexo pedagógico

atoi () trata la configuración regional de la misma manera que strtol Y g_ascii_strtoll () . Una lectura muy cuidadosa de las páginas de manual y la documentación de Glib lo revelará. Aquí hay algunos fragmentos para aquellos que no pueden RTFM :

atoi ()

La función atoi () convierte la porción inicial de la cadena a la que apunta nptr en int. El comportamiento es el mismo que strtol (nptr, (char **) NULL, 10); excepto que atoi () no detecta errores.

strtol ()

En entornos locales que no sean " C " configuración regional, también se pueden aceptar otras cadenas. (Por ejemplo, el separador de miles de la configuración regional actual puede ser compatible).

g_ascii_strtoll ()

Convierte una cadena en un valor de gint64. Esta función se comporta como la función estándar strtoll () en la configuración regional C. Hace esto sin cambiar realmente la configuración regional actual, ya que eso no sería seguro para subprocesos.

Cambiar la configuración regional

Si esto no es lo suficientemente sans-locale, puede configurarlo a través de variables de entorno y / o llamadas explícitas a setlocale ()

Otros consejos

GLib es una biblioteca de propósito general que proporciona una base común para desarrollar aplicaciones. Esto no significa que GLib reimplemente toda la biblioteca C estándar, sino que abstraiga lo que no esté disponible (o no sea consistente) en todas las plataformas compatibles.

Entonces, en resumen, debe usar la función estándar atoi () : GLib implementa solo las variantes gdouble y gint64 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top