C ++ wcstod () - C ++ Standardbibliotek

Funktionen wcstod () i C ++ tolkar innehållet i en bred sträng som ett flyttalsnummer och returnerar dess värde som en dubbel.

Funktionen wcstod () ställer också in en pekare som ska peka på det första breda tecknet efter den sista giltiga tecknet i bredsträngen om det finns någon, annars är pekaren inställd på null.

Det definieras i rubrikfilen.

wcstod () prototyp

 dubbel wcstod (const wchar_t * str, wchar_t ** str_end);

Funktionen wcstod () tar bred sträng och en pekare till bred karaktär som parameter, tolkar innehållet i den breda strängen som ett flyttalsnummer och returnerar ett dubbelt värde.

wcstod () Parametrar

  • str: En bred sträng som representerar ett flytpunktsnummer.
  • str_end: Pekare till en pekare till ett brett tecken. Värdet på str_end ställs in av funktionen till nästa tecken i str efter det sista giltiga tecknet. Denna parameter kan också vara en nollpekare.

wcstod () Returvärde

Funktionen wcstod () returnerar:

  • ett dubbelvärde (som omvandlas från den breda strängen).
  • 0.0 om ingen giltig konvertering kunde utföras.

Om det konverterade värdet ligger utanför intervallet inträffar ett intervallfel och ett positivt eller negativt HUGE_VAL returneras.

Exempel 1: Hur fungerar wcstod () -funktionen?

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

När du kör programmet blir resultatet:

 Bred sträng = 83.201xzҖ ڇ Dubbelvärde = 83.201 Slutsträng = xzҖ ڇ

Exempel 2: funktion wcstod () utan efterföljande tecken

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

När du kör programmet blir resultatet:

 Wide String = 83.201 Dubbelvärde = 83.201 End String =

Ett giltigt flytpunktsvärde för wcstod () -funktionen består av ett valfritt + eller - tecken följt av en av följande uppsättningar:

  • För decimalt flytande punktvärde :
    • En grupp decimalsiffror (0-9), valfritt innehållande en decimalpunkt (.). Till exempel: 13.170, -5.63, etc.
    • En valfri exponentdel (e eller E) följt av ett valfritt + eller - tecken och icke-tom sekvens av decimalsiffror. Till exempel: 3.46101e + 007, 13.19e-013, etc.
  • För hexadecimalt flytpunkt :
    • En sträng som börjar med 0x eller 0X, följt av en icke-tom sekvens av hexadecimala siffror, valfritt innehållande en decimal (.). Till exempel: 0xfa5, -0xb1f.24, etc.
    • En valfri exponentdel (p eller P) följt av ett valfritt + eller - tecken och en icke-tom sekvens av hexadecimala siffror. Till exempel: 0x51c.23p5, -0x2a.3p-3, etc.
  • Oändlighet :
    • INF eller INFINITY (ignorerar fall). Till exempel: -Inf, InfiNiTy, etc.
  • NaN (inte ett nummer) :
    • NAN- eller NAN-sekvens (ignorerar skiftläge) där sekvensen är en sekvens av tecken som endast består av alfanumeriska tecken eller understrykningen (_). Resultatet är en tyst NaN. Till exempel: Nan, NaNab1, etc.

Exempel 3: Hur fungerar wcstod () med exponenter och hexadecimaler?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"-136.31e-2Endu03c8"; wchar_t str2() = L"0x11a.2cu05ea"; wchar_t *end; double value; value = wcstod(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstod(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

När du kör programmet blir resultatet:

 Bred sträng = -136.31e-2Endψ Dubbelvärde = -1.3631 Slutsträng = Slutψ Bred sträng = 0x11a.2c ת Dubbelvärde = 282.172 Slutsträng = ת

Exempel 4: wcstod-fodral för INFINITY och 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"NaN11u0429"; wchar_t *end; double value; value = wcstod(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstod(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

När du kör programmet blir resultatet:

 Bred sträng = -inFinityxΣy Dubbelvärde = -inf Slutsträng = xΣy Bred sträng = NaN11Щ Dubbelvärde = nan Slutsträng = 11Щ

I allmänhet har ett giltigt flytande argument för wcstod () -funktionen följande form:

 (mellanslag) (- | +) (siffror) (. siffror) ((e | E) (- | +) siffror)

Funktionen wcstod () ignorerar alla ledande blankstegstecken tills det primära teckenet som inte är mellanslag hittas.

Från och med denna karaktär tar det så många tecken som möjligt som bildar en giltig flytpunktsrepresentation och konverterar dem till ett flytpunktsvärde. Oavsett vad som är kvar av strängen efter det sista giltiga tecknet lagras i det objekt som str_end pekar på.

Exempel 5: wcstod () -funktion med ledande blanksteg

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

När du kör programmet blir resultatet:

 Bred sträng = 21,69Ӹaa Dubbelvärde = 21,69 Slutsträng = Ӹaa

Intressanta artiklar...