### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python 2.6ja2 documentation »
- Python/C API リファレンスマニュアル »
- ユーティリティ関数 »

# 文字列の変換と書式化

数値変換と、書式化文字列出力のための関数群

int `PyOS_snprintf`(char *str, size_t size, const char *format, ...)

  書式化文字列 format と追加の引数から、 size バイトを超えない文字列を str に出力します。 Unix man page の snprintf(2) を参照してください。

int `PyOS_vsnprintf`(char *str, size_t size, const char *format, va_list va)

  書式化文字列 format と可変長引数リスト va から、 size バイトを超えない文字列を str に出力します。 Unix man page の vsnprintf(2) を参照してください。

`PyOS_snprintf()` と `PyOS_vsnprintf()` は標準Cライブラリの `snprintf()` と `vsnprintf()` 関数をラップします。これらの関数の目的は、C標準ライブラリが保証していないコーナーケースでの動作を保証することです。

これらのラッパ関数は、戻るときに str*[*size-1] が常に `'\0'` であることを保証します。 (str の末尾の `'\0'` を含めて) size バイト以上を書き込みません。 `str != NULL`, `size > 0`, `format != NULL` を要求します。

もし `vsnprintf()` のないプラットフォームで、切り捨てを避けるために必要なバッファサイズが size を512バイトより大きく超過していれば、 Python は Py_FatalError で abort します。

The return value (rv) for these functions should be interpreted as follows: これらの関数の戻り値 (rv) は次のように解釈されなければなりません:

- `0 <= rv < size` のとき、変換出力は成功して、 (最後の str*[*rv] にある `'\0'` を除いて) rv 文字が str に出力された。
- `rv >= size` のとき、変換出力は切り詰められており、成功するためには `rv + 1` バイトが必要だったことを示します。 str*[*size-1] は `'\0'` です。
- `rv < 0` のときは、何か悪いことが起こった時です。この場合でも str*[*size-1] は `'\0'` ですが、 str のそれ以外の部分は未定義です。エラーの正確な原因はプラットフォーム依存です。

以下の関数は locale 非依存な文字列から数値への変換を行ないます。

double `PyOS_ascii_strtod`(const char *nptr, char **endptr)

  文字列を `double` へ変換します。この関数は、C locale におけるC標準の `strtod()` と同じように動作します。スレッドセーフのために、この関数は現在の locale を変更せずに実装されています。

  `PyOS_ascii_strtod()` は通常、設定ファイルを読み込むときや、ロケール独立な非ユーザーからの入力を読み込むときに使われるべきです。

  バージョン 2.4 で追加.

  詳細は Unix man page の strtod(2) を参照してください。

char * `PyOS_ascii_formatd`(char *buffer, size_t buf_len, const char *format, double d)

  `double` を `'.'` を小数点記号に利用して文字列に変換します。 format は数値のフォーマットを指定する `printf()` スタイルの文字列です。利用できる変換文字は `'e'`, `'E'`, `'f'`, `'F'`, `'g'`, `'G'` です。

  戻り値は、変換された文字列が格納された buffer へのポインタか、失敗した場合は NULL です。

  バージョン 2.4 で追加.

double `PyOS_ascii_atof`(const char *nptr)

  文字列を、 locale 非依存な方法で `double` へ変換します。

  バージョン 2.4 で追加.

  詳細は Unix man page の atof(2) を参照してください。

char * `PyOS_stricmp`(char *s1, char *s2)

  大文字/小文字を区別しない文字列比較。大文字/小文字を無視する以外は、 `strcmp()` と同じ動作をします。

  バージョン 2.6 で追加.

char * `PyOS_strnicmp`(char *s1, char *s2, Py_ssize_t size)

  大文字/小文字を区別しない文字列比較。大文字/小文字を無視する以外は、 `strncmp()` と同じ動作をします。

  バージョン 2.6 で追加.

### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python 2.6ja2 documentation »
- Python/C API リファレンスマニュアル »
- ユーティリティ関数 »