Domanda

Ho una stringa che contiene (le cifre di) un valore intero e voglio ottenere questo valore come int. Sono consapevole che esistono altri metodi per farlo come atoi () ; comunque, mi piacerebbe davvero usare glib per farlo. Esiste una tale funzione di analisi / conversione?

È stato utile?

Soluzione

GLib fornisce gran parte della libreria C standard con controlli di sicurezza per l'input e miglioramenti ove possibile.

La funzione che stai cercando è g_ascii_strtoll () .

Addendum pedante

atoi () tratta le impostazioni locali allo stesso modo di strtol E g_ascii_strtoll () . Una lettura molto attenta delle manpage e della documentazione di Glib lo rivelerà. Ecco alcuni frammenti per coloro che non possono RTFM :

atoi ()

La funzione atoi () converte la parte iniziale della stringa puntata da nptr in int. Il comportamento è lo stesso di strtol (nptr, (char **) NULL, 10); tranne che atoi () non rileva errori.

strtol ()

In locali diversi da " C " locale, possono essere accettate anche altre stringhe. (Ad esempio, potrebbe essere supportato il separatore delle migliaia della locale corrente.)

g_ascii_strtoll ()

Converte una stringa in un valore gint64. Questa funzione si comporta come la funzione strtoll () standard nella locale C. Lo fa senza effettivamente modificare le impostazioni internazionali correnti, dal momento che non sarebbe thread-safe.

Modifica delle impostazioni internazionali

Se questo non è abbastanza sans-locale, è possibile impostare la locale tramite variabili di ambiente e / o chiamate esplicite a setlocale ()

Altri suggerimenti

GLib è una libreria per scopi generici che fornisce una base comune per lo sviluppo di applicazioni. Questo non significa che GLib reimplementi tutta la libreria C standard, ma invece estrae tutto ciò che non è disponibile (o non coerente) su tutte le piattaforme supportate.

Quindi, in breve, è necessario utilizzare la funzione standard atoi () : GLib implementa solo le varianti gdouble e gint64 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top