如何解析glib字符串(gchar*)中的整数?

如何解析glib字符串(gchar*)中的整数?,c,string,glib,atoi,C,String,Glib,Atoi,我有一个包含整数值(数字)的字符串,我希望以int形式获取该值。我知道还有其他方法可以实现这一点,例如atoi();然而,我真的很想用glib来做这件事。这样的解析/转换功能存在吗?GLib是一个通用库,它为开发应用程序提供了公共基础。这并不意味着GLib将重新实现所有标准C库,而是在所有支持的平台上抽象出任何不可用(或不一致)的内容 因此,简而言之,您必须使用标准的atoi()函数:GLib只实现gdouble和gint64变体。GLib为标准C库的大部分内容提供了输入安全检查,并在可行的情况

我有一个包含整数值(数字)的字符串,我希望以int形式获取该值。我知道还有其他方法可以实现这一点,例如
atoi()
;然而,我真的很想用glib来做这件事。这样的解析/转换功能存在吗?

GLib是一个通用库,它为开发应用程序提供了公共基础。这并不意味着GLib将重新实现所有标准C库,而是在所有支持的平台上抽象出任何不可用(或不一致)的内容


因此,简而言之,您必须使用标准的
atoi()
函数:GLib只实现
gdouble
gint64
变体。

GLib为标准C库的大部分内容提供了输入安全检查,并在可行的情况下提供了增强功能

您正在寻找的功能是

学究式附录

atoi()
对待语言环境的方式与
strtol
g\u ascii\u strtol()处理语言环境的方式相同。仔细阅读手册页和油嘴滑舌的文档可以发现这一点。以下是一些无法做到这一点的代码片段:

函数的作用是:将nptr指向的字符串的初始部分转换为int。其行为与
strtol(nptr,(char**)NULL,10)相同除了atoi()不检测错误之外

在“C”语言环境以外的语言环境中,也可以接受其他字符串。(例如,可能支持当前区域设置的千位分隔符。)

将字符串转换为gint64值。此函数的行为类似于C语言环境中的标准strtoll()函数。它在不实际更改当前区域设置的情况下执行此操作,因为这不是线程安全的

更改区域设置


如果这还不够sans语言环境,您可以通过环境变量和/或显式调用

来设置语言环境。您的意思是将字符串转换为int还是将指针转换为int?我的意思是将字符串转换为int。这实际上是错误的答案。g_ascii_strtoll()不是atoi()或strtoll()的增强,它是独立于语言环境的版本。g_ascii_strtoll()文档说:“要处理用户的输入,通常应该使用对区域设置敏感的系统strtoll()函数。”ntd的答案是正确的,只需使用atoi()将字符串转换为int。这不是一个GLib函数,但没关系。嘿,他没有提到区域设置要求,如果区域设置不是问题,默认设置将很好。:)这就是问题所在,你永远不知道什么时候区域设置会成为一个问题。我不知道函数在不同的语言环境中到底有什么不同,但我可以想象,在韩国语言环境中,它可能根本就不会转换阿拉伯数字……确切地说。而g_ascii_strtoll()不会这样做。我的观点是g_ascii_strtoll()不是安全检查或增强功能的strtoll()或atoi()的替代品,它是一个用途完全不同的函数。所以OP的问题“是否有一个GLib函数可以代替atoi()”的答案是“否”,这是ntd的答案。如果你觉得我很烦人,我很抱歉。