C ++ wcstod () - Βασική βιβλιοθήκη C ++

Η συνάρτηση wcstod () στο C ++ ερμηνεύει τα περιεχόμενα μιας ευρείας συμβολοσειράς ως αριθμό κινητού σημείου και επιστρέφει την τιμή της ως διπλή.

Η συνάρτηση wcstod () ορίζει επίσης έναν δείκτη για να δείξει στον πρώτο μεγάλο χαρακτήρα μετά τον τελευταίο έγκυρο χαρακτήρα της ευρείας συμβολοσειράς εάν υπάρχει, διαφορετικά ο δείκτης έχει οριστεί σε μηδέν.

Ορίζεται στο αρχείο κεφαλίδας.

πρωτότυπο wcstod ()

 διπλό wcstod (const wchar_t * str, wchar_t ** str_end);

Η συνάρτηση wcstod () παίρνει ευρεία συμβολοσειρά και έναν δείκτη σε ευρεία χαρακτήρα ως παράμετρος της, ερμηνεύει το περιεχόμενο της ευρείας συμβολοσειράς ως αριθμό κινητού σημείου και επιστρέφει μια διπλή τιμή.

wcstod () Παράμετροι

  • str: Μια ευρεία συμβολοσειρά που έχει την αναπαράσταση ενός αριθμού κινητής υποδιαστολής.
  • str_end: Δείκτης σε δείκτη σε μεγάλο χαρακτήρα. Η τιμή του str_end ορίζεται από τη συνάρτηση στον επόμενο χαρακτήρα στο str μετά τον τελευταίο έγκυρο χαρακτήρα. Αυτή η παράμετρος μπορεί επίσης να είναι μηδενικός δείκτης.

wcstod () Τιμή επιστροφής

Η συνάρτηση wcstod () επιστρέφει:

  • διπλή τιμή (η οποία μετατρέπεται από την ευρεία συμβολοσειρά).
  • 0,0 εάν δεν μπορούσε να πραγματοποιηθεί έγκυρη μετατροπή.

Εάν η τιμή μετατροπής είναι εκτός του εύρους, εμφανίζεται σφάλμα εύρους και επιστρέφεται θετικό ή αρνητικό HUGE_VAL .

Παράδειγμα 1: Πώς λειτουργεί η λειτουργία wcstod ();

 #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; )

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 Wide String = 83.201xzҖ Җ Διπλή τιμή = 83.201 End String = xzҖ

Παράδειγμα 2: συνάρτηση wcstod () χωρίς χαρακτήρες που ακολουθούν

 #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; ) 

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 Wide String = 83.201 Διπλή τιμή = 83.201 End String =

Μια έγκυρη τιμή κυμαινόμενου σημείου για τη συνάρτηση wcstod () αποτελείται από ένα προαιρετικό σύμβολο + ή - ακολουθούμενο από ένα από τα ακόλουθα σύνολα:

  • Για δεκαδική τιμή κινητής υποδιαστολής :
    • Μια ομάδα δεκαδικών ψηφίων (0-9), που περιέχει προαιρετικά ένα δεκαδικό σημείο (.). Για παράδειγμα: 13.170, -5.63, κ.λπ.
    • Ένα προαιρετικό εκθετικό μέρος (e ή E) ακολουθούμενο από ένα προαιρετικό σύμβολο + ή - και μη κενή ακολουθία δεκαδικών ψηφίων. Για παράδειγμα: 3.46101e + 007, 13.19e-013, κ.λπ.
  • Για δεκαεξαδική τιμή κυμαινόμενου σημείου :
    • Μια συμβολοσειρά που ξεκινά με 0x ή 0X, ακολουθούμενη από μια μη κενή ακολουθία δεκαεξαδικών ψηφίων, που περιέχει προαιρετικά ένα δεκαδικό σημείο (.). Για παράδειγμα: 0xfa5, -0xb1f.24, κ.λπ.
    • Ένα προαιρετικό εκθετικό μέρος (p ή P) ακολουθούμενο από ένα προαιρετικό σύμβολο + ή - και μη κενή ακολουθία δεκαεξαδικών ψηφίων. Για παράδειγμα: 0x51c.23p5, -0x2a.3p-3, κ.λπ.
  • Άπειρο :
    • INF ή INFINITY (αγνοώντας την υπόθεση). Για παράδειγμα: -Inf, InfiNiTy κ.λπ.
  • NaN (όχι αριθμός) :
    • Ακολουθία NAN ή NAN (παράβλεψη πεζών) όπου η ακολουθία είναι μια ακολουθία χαρακτήρων που αποτελείται μόνο από αλφαριθμητικούς χαρακτήρες ή την υπογράμμιση (_). Το αποτέλεσμα είναι ένα αθόρυβο NaN. Για παράδειγμα: Nan, NaNab1 κ.λπ.

Παράδειγμα 3: Πώς λειτουργεί το wcstod () με εκθέτες και δεκαεξαδικά;

 #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; )

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 Wide String = -136.31e-2Endψ Διπλή τιμή = -1.3631 End String = Endψ Wide String = 0x11a.2c ת Διπλή τιμή = 282.172 End String = ת

Παράδειγμα 4: wcstod Cases for INFINITY και 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; )

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 Wide String = -inFinityxΣy Διπλή τιμή = -inf End String = xΣy Wide String = NaN11Щ Διπλή τιμή = nan End String = 11 nan

Γενικά, ένα έγκυρο όρισμα κινητού σημείου για τη συνάρτηση wcstod () έχει την ακόλουθη μορφή:

 (κενό διάστημα) (- | +) (ψηφία) (.digits) ((e | E) (- | +) ψηφία)

Η συνάρτηση wcstod () αγνοεί όλους τους κορυφαίους χαρακτήρες του διαστήματος έως ότου βρεθεί ο κύριος χαρακτήρας του μη κενού χώρου

Στη συνέχεια, ξεκινώντας από αυτόν τον χαρακτήρα, παίρνει όσο το δυνατόν περισσότερους χαρακτήρες που σχηματίζουν μια έγκυρη αναπαράσταση κυμαινόμενου σημείου και τους μετατρέπει σε μια τιμή κυμαινόμενου σημείου. Ό, τι απομένει από τη συμβολοσειρά μετά τον τελευταίο έγκυρο χαρακτήρα αποθηκεύεται στο αντικείμενο που δείχνει το str_end.

Παράδειγμα 5: Λειτουργία wcstod () με κεντρικό κενό διάστημα

 #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; )

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 Wide String = 21.69Ӹaa Διπλή τιμή = 21.69 End String = Ӹaa

ενδιαφέροντα άρθρα...