Как разобрать целое число в строке glib (gchar *)?

StackOverflow https://stackoverflow.com/questions/1622284

  •  06-07-2019
  •  | 
  •  

Вопрос

У меня есть строка, которая содержит (цифры) целочисленное значение, и я хочу получить это значение в виде целого числа. Я знаю, что для этого есть другие методы, такие как atoi () ; однако, я действительно хотел бы использовать glib для этого. Существует ли такая функция синтаксического анализа / преобразования?

Это было полезно?

Решение

GLib предоставляет большую часть стандартной библиотеки C с проверками безопасности для ввода и улучшениями, где это практически возможно.

Функция, которую вы ищете: <код> g_ascii_strtoll () .

Педантическое приложение

atoi () обрабатывает локаль так же, как strtol И g_ascii_strtoll () . Очень внимательное прочтение man-страниц и документации Glib покажет это. Вот некоторые фрагменты для тех, кто не может RTFM :

atoi ()

Функция atoi () преобразует начальную часть строки, на которую указывает nptr, в int. Поведение аналогично strtol (nptr, (char **) NULL, 10); за исключением того, что atoi () не обнаруживает ошибки.

strtol ()

В регионах, отличных от " C " locale, другие строки также могут быть приняты. (Например, может поддерживаться разделитель тысяч в текущей локали.)

g_ascii_strtoll ()

Преобразует строку в значение gint64. Эта функция ведет себя так же, как стандартная функция strtoll () в языке Си. Он делает это без фактического изменения текущей локали, поскольку это не будет потокобезопасным.

Изменение языка

Если это недостаточно для языкового стандарта, вы можете установить языковой стандарт с помощью переменных среды и / или явных вызовов <код> Setlocale ()

Другие советы

GLib - библиотека общего назначения, которая обеспечивает общую основу для разработки приложений. Это не означает, что GLib переопределяет всю стандартную библиотеку C, но вместо этого абстрагирует то, что недоступно (или несовместимо) на всех поддерживаемых платформах.

Короче говоря, вы должны использовать стандартную функцию atoi () : GLib реализует только варианты gdouble и gint64 .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top