加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 10:38:48 所属栏目:百科 来源:网络整理
导读:我有一个字符串,其中包含一个整数值(的数字),我想获得这个值作为一个int.我知道还有其他方法可以做到这一点,比如atoi();但是,我真的很想用glib来做这件事.这样的解析/转换功能是否存在? 解决方法 GLib为标准C库提供了大量的输入安全检查,并在可行的情况下进
我有一个字符串,其中包含一个整数值(的数字),我想获得这个值作为一个int.我知道还有其他方法可以做到这一点,比如atoi();但是,我真的很想用glib来做这件事.这样的解析/转换功能是否存在?

解决方法

GLib为标准C库提供了大量的输入安全检查,并在可行的情况下进行了增强.

您正在寻找的功能是g_ascii_strtoll().

迂腐的附录

atoi()以与strtol和g_ascii_strtoll()相同的方式处理locale.仔细阅读联机帮助页和Glib文档将揭示这一点.以下是那些不能RTFM的片段:

atoi()

atoi()函数将nptr指向的字符串的初始部分转换为int.行为与strtol相同(nptr,(char **)NULL,10);除了atoi()没有检测到错误.

strtol()

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

g_ascii_strtoll()

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

更改区域设置

如果这不是sans-locale,你可以通过环境变量设置语言环境,和/或显式调用setlocale()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读