atoi, atol, atoll
From cppreference.com
| ヘッダー <stdlib.h> で定義 |
||
| int atoi ( const char* str ); |
(1) | |
| long atol ( const char* str ); |
(2) | |
| long long atoll( const char* str ); |
(3) | (C99以降) |
str が指すバイト文字列から整数値を解釈します。暗黙の基数は常に 10 です。
最初の空白文字以外の文字が見つかるまで、空白文字をすべて破棄し、次に有効な整数表現を形成するために可能な限り多くの文字を取り込み、それらを整数値に変換します。有効な整数値は次の部分で構成されます。
- (任意)プラスまたはマイナスの記号
- 数字
結果の値が表現できない場合、つまり変換された値が対応する戻り値の型 の範囲外になる場合、動作は未定義です。
目次 |
[編集] パラメータ
| str | - | 解釈されるヌル終端バイト文字列へのポインタ |
[編集] 戻り値
成功した場合、str の内容に対応する整数値。
変換が実行できない場合、0 が返されます。
[編集] 注意
名前は「ASCII to integer」の略です。
[編集] 例
このコードを実行
#include <stdio.h> #include <stdlib.h> int main(void) { printf("%i\n", atoi(" -123junk")); printf("%i\n", atoi(" +321dust")); printf("%i\n", atoi("0")); printf("%i\n", atoi("0042")); // treated as a decimal number with leading zeros printf("%i\n", atoi("0x2A")); // only leading zero is converted discarding "x2A" printf("%i\n", atoi("junk")); // no conversion can be performed printf("%i\n", atoi("2147483648")); // UB: out of range of int }
実行結果の例
-123 321 0 42 0 0 -2147483648
[編集] 参照
- C23標準 (ISO/IEC 9899:2024)
- 7.22.1.2 atoi、atol、および atoll 関数 (p: TBD)
- C17標準 (ISO/IEC 9899:2018)
- 7.22.1.2 atoi、atol、および atoll 関数 (p: 249)
- C11標準 (ISO/IEC 9899:2011)
- 7.22.1.2 atoi、atol、および atoll 関数 (p: 341)
- C99標準 (ISO/IEC 9899:1999)
- 7.20.1.2 atoi、atol、および atoll 関数 (p: 307)
- C89/C90標準 (ISO/IEC 9899:1990)
- 4.10.1.2 atoi 関数
- 4.10.1.3 atol 関数
[編集] 関連項目
| (C99) |
バイト文字列を整数値に変換する (関数) |
| (C99) |
バイト文字列を符号なし整数値に変換する (関数) |
| (C95)(C99) |
ワイド文字列を整数値に変換する (関数) |
| (C95)(C99) |
ワイド文字列を符号なし整数値に変換する (関数) |
| C++ ドキュメント (atoi, atol, atoll)
| |