strtod, _strtod_l, wcstod, _wcstod_l
Dizeler çift duyarlıklı değerine dönüştürür.
double strtod(
const char *nptr,
char **endptr
);
double _strtod_l(
const char *nptr,
char **endptr,
_locale_t locale
);
double wcstod(
const wchar_t *nptr,
wchar_t **endptr
);
double wcstod_l(
const wchar_t *nptr,
wchar_t **endptr,
_locale_t locale
);
Parametreler
nptr
Dönüştürmek için null ile sonlandırılmış dize.endptr
Taramayı durduran karakter işaretçisi.locale
Kullanılacak yerel ayar.
Dönüş Değeri
strtod işlevin +/ –HUGE_VAL döndürdüğü durumda, gösterimin bir taşma neden olduğu zaman dışında, kayan nokta sayı değerini döndürür.HUGE_VAL işareti temsil edilemeyen değerin işareti ile eşleşir.strtod dönüştürme gerçekleştirilemeyiorsa veya bir yetersizlik durumu oluşursa 0 döndürür.
wcstod, benzer olarak strtod öğesine değerleri döndürür.Her iki işlev için de, Parametre Doğrulama içinde açıklandığı gibi, taşma veya yetersiz gelme oluşması ve geçersiz parametre işleyici çağrılması durumunda errno, ERANGE olarak ayarlanır.
Bkz: _doserrno, hatano, _sys_errlist ve _sys_nerr bu ve diğer dönüş kodları hakkında daha fazla bilgi için.
Notlar
Her işlev nptr giriş dizesini bir double öğesine dönüştürür.strtod İşlev dönüştürür nptr bir çift duyarlıklı değer.strtod bir sayının parçası olarak tanıyamadığı ilk karakterde nptr dizesini okumayı durdurur.Bu sondaki boş karakter olabilir.wcstod, strtod öğesinin geniş karakterli sürümüdür; nptr geniş karakterli bir dizedir.Bu işlevler, aksi halde aynı şekilde davranır.
Genel Metin Yordam Eşleşmeleri
TCHAR.H yordamı |
_UNICODE & _MBCS tanımlanmamış |
_MBCS tanımlanmış |
_UNICODE tanımlanmış |
---|---|---|---|
_tcstod |
strtod |
strtod |
wcstod |
_tcstod_l |
_strtod_l |
_strtod_l |
_wcstod_l |
LC_NUMERIC Kategori geçerli yerel ayarı belirler tanıma sayı tabanı karakterinin nptr*;* daha fazla bilgi için bkz: setlocale.İşlevleri olmadan _l soneki kullanan yerel; _strtod_l aynı _strtod_l yerine geçirilen yerel ayarları kullanmasını dışında.Daha fazla bilgi için bkz. Yerel Ayar.
endptr öğesi NULL değilse, taramayı durduran karaktere ait bir işaretçi endptr tarafından işaret edilen konumda depolanır.Dönüştürme gerçekleştirilemezse (geçerli hiç basamak bulunamamış veya geçersiz bir taban belirtilmişse), nptr öğesinin değeri endptr tarafından işaret edilen konumda depolanır.
strtod , nptr aşağıdaki biçimin bir dizesine işaret etmeyei bekler:
[whitespace] [sign] [digits] [.digits] [ {d | D | e | E}[sign]digits]
whitespace, yoksayılan boşluk ve sekme karakterlerinden oluşabilir; sign, artı (+) veya eksidir (–); digits ise bir ya da daha fazla ondalık basamaktır.Taban karakterden önce bir basamak görüntülenmezse, taban karakterden sonra en az bir basamak görüntülenmelidir.Ondalık basamaklardan sonra bir tanıtıcı harften (d, D , e veya E ) ve isteğe bağlı olarak imzalı bir tamsayıdan oluşan bir üs gelebilir.Üstel bir parça veya bir taban karakter görüntülenmezse, taban karakterin dizedeki son basamağı izlediği varsayılır.Bu forma uymayan ilk karakter taramayı durdurur.
Gereksinimler
Yordam |
Gerekli başlık |
---|---|
strtod, _strtod_l |
<stdlib.h> |
wcstod, _wcstod_l |
<string.h> veya <wchar.h> |
Ek uyumluluk bilgileri için Giriş altındaki Uyumluluk bölümüne bakın.
Örnek
// crt_strtod.c
// This program uses strtod to convert a
// string to a double-precision value; strtol to
// convert a string to long integer values; and strtoul
// to convert a string to unsigned long-integer values.
//
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char *string, *stopstring;
double x;
long l;
int base;
unsigned long ul;
string = "3.1415926This stopped it";
x = strtod( string, &stopstring );
printf( "string = %s\n", string );
printf(" strtod = %f\n", x );
printf(" Stopped scan at: %s\n\n", stopstring );
string = "-10110134932This stopped it";
l = strtol( string, &stopstring, 10 );
printf( "string = %s\n", string );
printf(" strtol = %ld\n", l );
printf(" Stopped scan at: %s\n\n", stopstring );
string = "10110134932";
printf( "string = %s\n", string );
// Convert string using base 2, 4, and 8:
for( base = 2; base <= 8; base *= 2 )
{
// Convert the string:
ul = strtoul( string, &stopstring, base );
printf( " strtol = %ld (base %d)\n", ul, base );
printf( " Stopped scan at: %s\n", stopstring );
}
}
.NET Framework Eşdeğeri
Ayrıca bkz.
Başvuru
Çok Baytlı Karakter Sıralarının Yorumu
Sayısal Değer İşlevleri Dizesi
strtol, wcstol, _strtol_l, _wcstol_l
strtoul, _strtoul_l, wcstoul, _wcstoul_l