strtold
, _strtold_l
, wcstold
, _wcstold_l
Dizeleri uzun bir çift duyarlıklı kayan nokta değerine dönüştürür.
Sözdizimi
long double strtold(
const char *strSource,
char **endptr
);
long double _strtold_l(
const char *strSource,
char **endptr,
_locale_t locale
);
long double wcstold(
const wchar_t *strSource,
wchar_t **endptr
);
long double wcstold_l(
const wchar_t *strSource,
wchar_t **endptr,
_locale_t locale
);
Parametreler
strSource
Dönüştürülecek null ile sonlandırılan dize.
endptr
Taramayı durduran karakterin işaretçisi.
locale
Kullanılacak yerel ayar.
Dönüş değeri
strtold
, kayan noktalı sayının değerini olarak long double
döndürür, ancak gösterimin taşmasına neden olacağı durumlar dışında işlev +/-HUGE_VALL
döndürür. işareti HUGE_VALL
, temsil edilmeyecek değerin işaretiyle eşleşir. strtold
dönüştürme gerçekleştirilemiyorsa veya bir yetersizlik oluşursa 0 döndürür.
wcstold
ile benzer değerler strtold
döndürür. Her iki işlev için de taşma errno
veya yetersizlik oluşursa olarak ayarlanır ERANGE
ve parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır.
İade kodları hakkında daha fazla bilgi için bkz. errno
, _doserrno
, _sys_errlist
ve _sys_nerr
.
Açıklamalar
Her işlev giriş dizesini strSource
öğesine long double
dönüştürür. İşlev, strtold
dizeyi strSource
bir sayının parçası olarak tanıyamayan ilk karakterde okumayı durdurur. Sonlandırıcı null karakter olabilir. öğesinin strtold
geniş karakterli sürümüdür wcstold
; strSource
bağımsız değişkeni geniş karakterli bir dizedir. Aksi takdirde, bu işlevler aynı şekilde davranır.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Genel metin yordamı eşlemeleri
TCHAR.H yordamı | _UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_tcstold |
strtold |
strtold |
wcstold |
_tcstold_l |
_strtold_l |
_strtold_l |
_wcstold_l |
LC_NUMERIC
Geçerli yerel ayarın kategori ayarı, içindeki strSource
radix karakterinin tanınmasını belirler. Daha fazla bilgi için bkz. setlocale
, _wsetlocale
. Soneki _l
olmayan işlevler geçerli yerel ayarı _strtold_l
kullanır ve _wcstold_l
ile aynıdır _strtold
ve _wcstold
bunun yerine geçirilen yerel ayarı kullanırlar. Daha fazla bilgi için bkz . Yerel Ayar.
değilse endptr
NULL
, taramayı durduran karakterin işaretçisi tarafından endptr
işaret edilen konumda depolanır. Dönüştürme gerçekleştirilemiyorsa (geçerli basamak bulunamadıysa veya geçersiz bir taban belirtildiyse), değeri strSource
tarafından endptr
işaret edilen konumda depolanır.
strtold
strSource
aşağıdaki biçimdeki bir dizeye işaret etmesini bekler:
[
whitespace
][][digits
sign
][.digits
] [{d
e
D
| |E
| }[sign
]]digits
bir whitespace
, yoksayılan boşluk ve 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.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
strtold , _strtold_l |
<stdlib.h> |
wcstold , _wcstold_l |
<stdlib.h> veya <wchar.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// crt_strtold.c
// Build with: cl /W4 /Tc crt_strtold.c
// This program uses strtold to convert a
// string to a long double-precision value.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char *string;
char *stopstring;
long double x;
string = "3.1415926535898This stopped it";
x = strtold(string, &stopstring);
printf("string = %s\n", string);
printf(" strtold = %.13Lf\n", x);
printf(" Stopped scan at: %s\n\n", stopstring);
}
string = 3.1415926535898This stopped it
strtold = 3.1415926535898
Stopped scan at: This stopped it
Ayrıca bkz.
Veri dönüştürme
Matematik ve kayan nokta desteği
Çok baytlı karakter dizilerinin yorumlanması
Yerel ayar
Sayısal değer işlevlerine dize
strtod
, _strtod_l
, wcstod
, _wcstod_l
strtol
, wcstol
, _strtol_l
, _wcstol_l
strtoul
, _strtoul_l
, wcstoul
, _wcstoul_l
atof
, _atof_l
, _wtof
, _wtof_l
localeconv
_create_locale
, _wcreate_locale
_free_locale