C ++ wcstold () - Standardna knjižnica C ++

Funkcija wcstold () v jeziku C ++ razlaga vsebino širokega niza kot številko s plavajočo vejico in vrne njeno vrednost kot long double.

Funkcija wcstold () nastavi tudi kazalec, ki kaže na prvi široki znak za zadnjim veljavnim znakom širokega niza, če sploh obstaja, sicer je kazalec nastavljen na nič.

Določen je v datoteki glave.

prototip wcstold ()

 dolg dvojni wcstold (const wchar_t * str, wchar_t ** str_end);

Funkcija wcstold () za parameter vzame širok niz in kazalec na širok znak, interpretira vsebino širokega niza kot število s plavajočo vejico in vrne dolgo dvojno vrednost.

wcstold () Parametri

  • str: Širok niz, ki predstavlja število s plavajočo vejico.
  • str_end: Kazalec na kazalec na širok znak. Vrednost str_end nastavi funkcija na naslednji znak v str za zadnjim veljavnim znakom. Ta parameter je lahko tudi ničelni kazalec.

wcstold () Vrnjena vrednost

Funkcija wcstold () vrne:

  • dolga dvojna vrednost (ki se pretvori iz širokega niza).
  • 0.0, če ni bilo mogoče izvesti nobene veljavne pretvorbe.

Če je pretvorjena vrednost zunaj obsega, pride do napake obsega in vrne se pozitiven ali negativen HUGE_VAL .

Primer 1: Kako deluje funkcija wcstold ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"93.410u03b7u05ea"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Ko zaženete program, bo rezultat:

 Širok niz = 93.410η ת Dolga dvojna vrednost = 93.41 Končni niz = η ת

Primer 2: funkcija wcstold () brez končnih znakov

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"93.410"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Ko zaženete program, bo rezultat:

 Široki niz = 93.410 Dolga dvojna vrednost = 93.41 Končni niz =

Veljavna vrednost s plavajočo vejico za funkcijo wcstold () je sestavljena iz neobveznega znaka + ali -, ki mu sledi eden od naslednjih nizov:

  • Za decimalno vrednost s plavajočo vejico :
    • Skupina decimalnih števk (0–9), ki neobvezno vsebuje decimalno vejico (.). Na primer: 13.170, -5,63 itd.
    • Izbirni eksponentni del (e ali E), ki mu sledi neobvezni znak + ali - in neprazno zaporedje decimalnih števk. Na primer: 3,46101e + 007, 13,19e-013 itd.
  • Za šestnajstiško vrednost s plavajočo vejico :
    • Niz, ki se začne z 0x ali 0X, čemur sledi neprazno zaporedje šestnajstiških številk, ki po izbiri vsebujejo decimalno vejico (.). Na primer: 0xfa5, -0xb1f.24 itd.
    • Izbirni eksponentni del (p ali P), ki mu sledi neobvezni znak + ali - in neprazno zaporedje šestnajstiških številk. Na primer: 0x51c.23p5, -0x2a.3p-3 itd.
  • Neskončnost :
    • INF ali INFINITY (ignoriranje velikih in malih črk). Na primer: -Inf, InfiNiTy itd.
  • NaN (ni številka) :
    • NAN ali NAN zaporedje (ignoriranje velikih ali malih črk), kjer je zaporedje zaporedje znakov, sestavljeno samo iz alfanumeričnih znakov ali podčrtaja (_). Rezultat je tih NaN. Na primer: Nan, NaNab1 itd.

Primer 3: Kako wcstold () deluje z eksponenti in šestnajstiškimi znaki?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"34.901u00c6u00f1"; wchar_t str2() = L"0Xfc1.a12u03c7r12"; wchar_t *end; long double value; value = wcstold(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstold(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Ko zaženete program, bo rezultat:

 Širok niz = 34.901Æñ Dolga dvojna vrednost = 34.901 Končni niz = Æñ Širok niz = 0Xfc1.a12χr12 Dolga dvojna vrednost = 4033.63 Končni niz = χr12

Primer 4: wcstold primeri za INFINITY in NaN

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"inFinityxu03a3y"; wchar_t str2() = L"NaN22u0429"; wchar_t *end; long double value; value = wcstold(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstold(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Ko zaženete program, bo rezultat:

 Širok niz = inFinityxΣy Dolga dvojna vrednost = inf Končni niz = xΣy Širok niz = NaN22Щ Dolga dvojna vrednost = nan Končni niz = 22Щ

Na splošno veljaven argument s plavajočo vejico za funkcijo wcstold () ima naslednjo obliko:

 (presledek) (- | +) (števke) (.števke) ((e | E) (- | +) števke)

Funkcija wcstold () prezre vse vodilne presledke, dokler ne najde primarnega znaka, ki ni presledek.

Nato, začenši s tem znakom, vzame čim več znakov, ki tvori veljavno predstavitev s plavajočo vejico in jih pretvori v vrednost s plavajočo vejico. Karkoli ostane od niza po zadnjem veljavnem znaku, se shrani v predmet, na katerega kaže str_end.

Primer 5: funkcija wcstold () z vodilnimi presledki

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L" 59.013u0915u0975"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Ko zaženete program, bo rezultat:

 Širok niz = 59.013 कॵ Dolga dvojna vrednost = 59.013 Končni niz = कॵ

Zanimive Članki...