4

整数値 (の数字) を含む文字列があり、この値を int として取得したいと考えています。これを行うには、次のような他の方法があることを認識していatoi()ます。ただし、これを行うには glib を使用したいと思います。そのような解析/変換機能は存在しますか?

4

2 に答える 2

11

GLib は、入力の安全性チェックを備えた標準 C ライブラリの多くを提供し、実用的な拡張機能を提供します。

お探しの機能はg_ascii_strtoll().

衒学的な補遺

atoi()strtolロケールをANDと同じように扱いますg_ascii_strtoll()。マンページと Glib のドキュメントを注意深く読むと、これが明らかになります。RTFMができない人のためのスニペットを次に示します。

atoi()

atoi() 関数は、nptr が指す文字列の最初の部分を int に変換します。strtol(nptr, (char **) NULL, 10);atoi() がエラーを検出しない点を除いて、動作は と同じです。

strtol()

「C」ロケール以外のロケールでは、他の文字列も受け入れられる場合があります。(たとえば、現在のロケールの千単位の区切り記号がサポートされている場合があります。)

g_ascii_strtoll()

文字列を gint64 値に変換します。この関数は、C ロケールでの標準の strtoll() 関数のように動作します。現在のロケールを実際に変更することなくこれを行います。これは、スレッドセーフではないためです。

ロケールの変更

これが sans-locale で十分でない場合は、環境変数や明示的な呼び出しによってロケールを設定できます。setlocale()

于 2009-10-26T10:10:35.643 に答える
4

GLib は、アプリケーションを開発するための共通の基盤を提供する汎用ライブラリです。これは、GLib がすべての標準 C ライブラリを再実装するという意味ではありませんが、代わりに、サポートされているすべてのプラットフォームで利用できない (または一貫していない) ものを抽象化します。

したがって、要するに、標準atoi()関数を使用する必要があります。GLib はgdoubleおよびgint64バリアントのみを実装します。

于 2009-10-25T22:41:46.240 に答える