C ++ wcstof () - C ++ Standardbibliotek

Funktionen wcstof () i C ++ tolkar innehållet i en bred sträng som ett flytande nummer och returnerar dess värde som en flottör.

Denna funktion 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.

wcstof () prototyp

 float wcstof (const wchar_t * str, wchar_t ** str_end);

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

wcstof () 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.

wcstof () Returvärde

Funktionen wcstof () returnerar:

  • ett flytvä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 wcstof () -funktionen?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"40.001u220fc12"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

När du kör programmet blir resultatet:

 Bred sträng = 40.001∏c12 Flytvärde = 40.001 Slutsträng = ∏c12

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

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

När du kör programmet blir resultatet:

 Bred sträng = 791.513 Flytvärde = 791.513 Slutsträng =

Ett giltigt flytpunktsvärde för wcstof () -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 wcstof () med exponenter och hexadecimaler?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"39.119e+2xxu0a93"; wchar_t str2() = L"0Xf1.23cu00d8a1"; wchar_t *end; float value; value = wcstof(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstof(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

När du kör programmet blir resultatet:

 Bred sträng = 39.119e + 2xx ઓ Flytvärde = 3911.9 Slutsträng = xx ઓ Bred sträng = 0Xf1.23cØa1 Flytvärde = 241.14 Ändsträng = Øa1

Exempel 4: wcstof-fall 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; float value; value = wcstof(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstof(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

När du kör programmet blir resultatet:

 Bred sträng = -inFinityxΣy flytvärde = -inf slutsträng = xΣy bred sträng = NaN11Щ flytvärde = nan slutsträng = 11Щ

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

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

Funktionen wcstof () ignorerar alla ledande blankstegstecken tills det primära karaktärstecknet inte finns.

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: wcstof () -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; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float 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 Flytvärde = 21,69 slutsträng = Ӹaa

Intressanta artiklar...