Pergunta

Eu tenho uma string que contém (os dígitos de) um valor inteiro, e eu quero obter esse valor como um int. Estou ciente de que existem outros métodos para fazer isso, como atoi(); No entanto, eu realmente gosto de usar glib para fazer isso. Funciona como uma análise / conversão existe?

Foi útil?

Solução

GLib fornece grande parte da biblioteca padrão C com verificações de segurança para entrada e melhorias sempre que possível.

A função que você está procurando g_ascii_strtoll() .

pedante adendo

atoi() trata localidade da mesma forma que strtol E g_ascii_strtoll(). Uma leitura muito cuidadosa das manpages e documentação Glib vai revelar isso. Aqui estão alguns trechos para aqueles que não podem RTFM :

atoi()

O atoi () converte função da porção inicial da string apontada por nptr para int. O comportamento é o mesmo que strtol(nptr, (char **) NULL, 10); exceto que atoi () não detectar erros.

strtol()

em locais que não seja a localidade "C", outras cordas também podem ser aceitos. (Por exemplo, o separador de milhares da localidade atual pode ser suportado.)

g_ascii_strtoll()

Converte uma string para um valor gint64. Esta função comporta-se como a função strtoll padrão () faz no local C. Ele faz isso sem alterar o local atual, uma vez que não seria thread-safe.

Alterar locale

Se isto não é sans-locale suficiente, você pode definir a localidade através de variáveis ??de ambiente, e / ou chamadas explícitas para setlocale()

Outras dicas

GLib é uma biblioteca de propósito geral que fornece uma base comum para desenvolver aplicativos. Isso não significa GLib reimplementa toda a biblioteca C padrão, mas em vez resumos tudo o que não está disponível (ou não consistente) em todas as plataformas suportadas.

Então, em suma, você deve usar a função atoi() padrão:. GLib implementos apenas o gdouble e gint64 variantes

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top