Sayısal değer işlevleri dizesi
Açıklamalar
Ailedeki strto*
her işlev, null olarak sonlandırılan bir dizeyi sayısal bir değere dönüştürür. Kullanılabilir işlevler aşağıdaki tabloda listelenmiştir.
İşlev | Açıklama |
---|---|
strtod |
Dizeyi çift duyarlıklı kayan nokta değerine dönüştürme |
strtol |
Dizeyi uzun tamsayıya dönüştürme |
strtoul |
Dizeyi işaretsiz uzun tamsayıya dönüştürme |
_strtoi64 |
Dizeyi 64 bit __int64 tamsayıya dönüştürme |
_strtoui64 |
Dizeyi işaretsiz 64 bit __int64 tamsayıya dönüştürme |
wcstod
, wcstol
, wcstoul
ve _wcstoi64
sırasıyla , strtol
, strtoul
ve _strtoi64
'nin strtod
geniş karakterli sürümleridir. Bu geniş karakterli işlevlerin her birine yönelik dize bağımsız değişkeni, geniş karakterli bir dizedir; her işlev tek bayt karakterli karşılığıyla aynı şekilde davranır.
strtod
İşlev iki bağımsız değişken alır: birincisi giriş dizesi, ikincisi ise dönüştürme işlemini sonlandıran karaktere yönelik bir işaretçi. strtol
, strtoul
_strtoi64
ve _strtoui64
dönüştürme işleminde kullanılacak sayı tabanı olarak üçüncü bir bağımsız değişken alın.
Giriş dizesi, belirtilen türün sayısal değeri olarak yorumlanabilir bir karakter dizisidir. Her işlev, bir sayının parçası olarak tanıyamayan ilk karakterdeki dizeyi okumayı durdurur. Bu karakter, sonlandırıcı null karakter olabilir. , strtol
strtoul
, _strtoi64
ve _strtoui64
için bu sonlandırıcı karakter, kullanıcı tarafından sağlanan sayı tabanından büyük veya buna eşit ilk sayısal karakter de olabilir.
Kullanıcı tarafından sağlanan dönüştürme sonu karakteri işaretçisi çağrı zamanında veya nullptr
olarak ayarlanmadıysaNULL
, taramayı durduran karakter işaretçisi orada depolanır. Dönüştürme gerçekleştirilemiyorsa (geçerli basamak bulunamadıysa veya geçersiz bir taban belirtildiyse), dize işaretçisinin değeri bu adreste depolanır.
strtod
aşağıdaki biçimde bir dize bekler:
[whitespace
] [] [digits
sign
] [.
digits
] [{d
e
D
| | E
| }[sign
]]digits
bir whitespace
, yoksayılan boşluk veya sekme karakterlerinden oluşabilir; sign
artı (+
) veya eksi (-
) olabilir ve digits
bir veya daha fazla ondalık basamaktır. Radix karakterinden önce hiç basamak görünmüyorsa, radix karakterinden sonra en az bir basamak görünmelidir. Ondalık basamakları, giriş harfi (d
, D
, e
veya E
) ve isteğe bağlı olarak imzalanan bir tamsayıdan oluşan bir üs takip edebilir. Üstel parça veya radix karakteri görüntülenmezse, dizedeki son basamaktan sonra gelen bir radix karakteri varsayılır. Bu forma uymayan ilk karakter taramayı durdurur.
strtol
, strtoul
, _strtoi64
ve _strtoui64
işlevleri aşağıdaki biçimde bir dize bekler:
[whitespace
] [{+
| -
}] [0
[{ x
| X
}]] [digits
]
Temel bağımsız değişken 2 ile 36 arasındaysa, sayının tabanı olarak kullanılır. 0 ise, temeli belirlemek için dönüştürme sonu işaretçisi tarafından başvuruda bulunan ilk karakterler kullanılır. İlk karakter 0 ve ikinci karakter 'x' veya 'X' değilse, dize sekizli tamsayı olarak yorumlanır; aksi takdirde, ondalık sayı olarak yorumlanır. İlk karakter '0' ve ikinci karakter 'x' veya 'X' ise, dize onaltılık tamsayı olarak yorumlanır. İlk karakter '1' ile '9' arasındaysa, dize ondalık tamsayı olarak yorumlanır. 'a' ile 'z' (veya 'A' ile 'Z' arasında) harflerine 10 ile 35 arasında değerler atanır; yalnızca atanan değerlerden küçük base
olan harflere izin verilir. strtoul
ve _strtoui64
artı (+
) veya eksi (-
) işareti önekine izin verin; baştaki eksi işareti, dönüş değerinin geçersiz olduğunu gösterir.
Çıkış değeri, yerel ayarın LC_NUMERIC
kategori ayarının ayarından etkilenir. Daha fazla bilgi için bkz. setlocale
. Bu işlevlerin son eki olmayan _l
sürümleri, bu yerel ayara bağımlı davranış için geçerli yerel ayarı kullanır; son ekine _l
sahip sürümler, bunun yerine geçirilen yerel ayar parametresini kullanmaları dışında aynıdır.
Bu işlevler tarafından döndürülen değer taşma veya taşmalara neden olabileceğinde veya dönüştürme mümkün olmadığında, özel durum değerleri gösterildiği gibi döndürülür:
İşlev | Koşul | Döndürülen değer |
---|---|---|
strtod |
Taşma | +/- HUGE_VAL |
strtod |
Yetersiz akış veya dönüştürme yok | 0 |
strtol |
+ Taşma | LONG_MAX |
strtol |
-Taşma | LONG_MIN |
strtol |
Yetersiz akış veya dönüştürme yok | 0 |
_strtoi64 |
+ Taşma | _I64_MAX |
_strtoi64 |
-Taşma | _I64_MIN |
_strtoi64 |
Dönüştürme yok | 0 |
_strtoui64 |
Taşma | _UI64_MAX |
_strtoui64 |
Dönüştürme yok | 0 |
_I64_MAX
, _I64_MIN
ve _UI64_MAX
içinde <LIMITS.H>
tanımlanır.
wcstod
, wcstol
, wcstoul
, _wcstoi64
ve _wcstoui64
sırasıyla , strtol
, strtoul
, _strtoi64
ve _strtoui64
öğelerinin strtod
geniş karakterli sürümleridir; bu geniş karakterli işlevlerin her birinin dönüştürme sonu bağımsız değişkeninin işaretçisi geniş karakterli bir dizedir. Aksi takdirde, bu geniş karakterli işlevlerin her biri tek bayt karakterli karşılığıyla aynı şekilde davranır.
Ayrıca bkz.
Veri dönüştürme
Yerel ayar
Çok baytlı karakter dizilerinin yorumlanması
Matematik ve kayan nokta desteği
atof
, _atof_l
, _wtof
, _wtof_l