Bagikan melalui


Fungsi string ke nilai numerik

Keterangan

Setiap fungsi dalam strto* keluarga mengonversi string null-terminated menjadi nilai numerik. Fungsi yang tersedia tercantum dalam tabel berikut.

Fungsi Deskripsi
strtod Mengonversi string menjadi nilai titik mengambang presisi ganda
strtol Mengonversi string menjadi bilangan bulat panjang
strtoul Mengonversi string menjadi bilangan bulat panjang yang tidak ditandatangani
_strtoi64 Mengonversi string menjadi bilangan bulat 64-bit __int64
_strtoui64 Mengonversi string menjadi bilangan bulat 64-bit __int64 yang tidak ditandatangani

wcstod, , wcstol, dan _wcstoi64 masing-masing adalah versi karakter lebar dari strtod, , strtolstrtoul, dan _strtoi64. wcstoul Argumen string untuk masing-masing fungsi karakter lebar ini adalah string karakter lebar; setiap fungsi berkinerja identik dengan rekan karakter byte tunggalnya jika tidak.

Fungsi ini strtod mengambil dua argumen: yang pertama adalah string input, dan yang kedua penunjuk ke karakter yang mengakhiri proses konversi. strtol, strtoul, _strtoi64 dan _strtoui64 ambil argumen ketiga sebagai basis angka yang akan digunakan dalam proses konversi.

String input adalah urutan karakter yang dapat ditafsirkan sebagai nilai numerik dari jenis yang ditentukan. Setiap fungsi berhenti membaca string pada karakter pertama yang tidak dapat dikenali sebagai bagian dari angka. Karakter ini mungkin karakter null yang mengakhiri. Untuk strtol, , _strtoi64strtoul, dan _strtoui64, karakter yang mengakhiri ini juga dapat menjadi karakter numerik pertama yang lebih besar dari atau sama dengan basis angka yang disediakan pengguna.

Jika penunjuk yang disediakan pengguna ke karakter akhir konversi tidak diatur ke NULL atau nullptr pada waktu panggilan, penunjuk ke karakter yang menghentikan pemindaian akan disimpan di sana sebagai gantinya. Jika tidak ada konversi yang dapat dilakukan (tidak ada digit valid yang ditemukan atau basis yang tidak valid ditentukan), nilai penunjuk string disimpan di alamat tersebut.

strtod mengharapkan string formulir berikut:

[whitespace] [sign] [digits] [.digits] [{deD | | E | }[sign]]digits

whitespace Mungkin terdiri dari karakter spasi atau tab, yang diabaikan; sign adalah plus (+) atau minus (-); dan digits adalah satu atau beberapa digit desimal. Jika tidak ada digit yang muncul sebelum karakter radiks, setidaknya satu harus muncul setelah karakter radiks. Digit desimal dapat diikuti oleh eksponen, yang terdiri dari huruf pengantar (d, , D, eatau E) dan bilangan bulat yang ditandatangani secara opsional. Jika tidak ada bagian eksponen atau karakter radiks yang muncul, karakter radiks diasumsikan untuk mengikuti digit terakhir dalam string. Karakter pertama yang tidak cocok dengan formulir ini menghentikan pemindaian.

Fungsi strtol, , _strtoi64strtoul, dan _strtoui64 mengharapkan string dari formulir berikut:

[whitespace] [{+ | -}] [0 [{ x | X }]] [digits]

Jika argumen dasar adalah antara 2 dan 36, maka argumen tersebut digunakan sebagai basis angka. Jika 0, karakter awal yang dirujuk oleh pointer akhir konversi digunakan untuk menentukan basis. Jika karakter pertama adalah 0 dan karakter kedua bukan 'x' atau 'X', string ditafsirkan sebagai bilangan bulat oktal; jika tidak, itu ditafsirkan sebagai angka desimal. Jika karakter pertama adalah '0' dan karakter kedua adalah 'x' atau 'X', string ditafsirkan sebagai bilangan bulat heksadesimal. Jika karakter pertama adalah '1' hingga '9', string ditafsirkan sebagai bilangan bulat desimal. Huruf 'a' melalui 'z' (atau 'A' hingga 'Z') diberi nilai 10 hingga 35; hanya huruf yang nilai yang ditetapkan kurang dari base yang diizinkan. strtoul dan _strtoui64 mengizinkan awalan tanda plus (+) atau minus (-) ; tanda minus terkemuka menunjukkan bahwa nilai pengembalian dinegasikan.

Nilai output dipengaruhi oleh pengaturan LC_NUMERIC pengaturan kategori lokal. Untuk informasi selengkapnya, lihat setlocale . Versi fungsi-fungsi ini tanpa _l akhiran menggunakan lokal saat ini untuk perilaku tergantung lokal ini; versi dengan _l akhiran identik kecuali bahwa mereka menggunakan parameter lokal yang diteruskan sebagai gantinya.

Ketika nilai yang dikembalikan oleh fungsi-fungsi ini akan menyebabkan luapan atau aliran bawah, atau ketika konversi tidak dimungkinkan, nilai kasus khusus dikembalikan seperti yang ditunjukkan:

Fungsi Kondisi Nilai yang dikembalikan
strtod Luapan +/- HUGE_VAL
strtod Underflow atau tidak ada konversi 0
strtol + Luapan LONG_MAX
strtol -Tumpah LONG_MIN
strtol Underflow atau tidak ada konversi 0
_strtoi64 + Luapan _I64_MAX
_strtoi64 -Tumpah _I64_MIN
_strtoi64 Tidak ada konversi 0
_strtoui64 Luapan _UI64_MAX
_strtoui64 Tidak ada konversi 0

_I64_MAX, _I64_MIN, dan _UI64_MAX didefinisikan dalam <LIMITS.H>.

wcstod, , wcstolwcstoul, _wcstoi64, dan _wcstoui64 adalah versi karakter lebar dari strtod, , strtol, strtoul_strtoi64, dan _strtoui64, masing-masing; penunjuk ke argumen akhir konversi ke masing-masing fungsi karakter lebar ini adalah string karakter lebar. Jika tidak, masing-masing fungsi karakter lebar ini berulah identik dengan rekan karakter byte tunggalnya.

Lihat juga

Konversi data
Lokal
Interpretasi urutan karakter multibyte
Dukungan matematika dan titik mengambang
atof, , _atof_l_wtof,_wtof_l