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

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

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

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

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

 μακρύ διπλό wcstold (const wchar_t * str, wchar_t ** str_end);

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

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

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

wcstold () Επιστροφή τιμή

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

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

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

Παράδειγμα 1: Πώς λειτουργεί η λειτουργία 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; )

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

 Wide String = 93.410η ² Long Double value = 93.41 End String = η ת

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

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

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

 Ευρεία συμβολοσειρά = 93.410 Long Double value = 93.41 End String =

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

  • Για δεκαδική τιμή κινητής υποδιαστολής :
    • Μια ομάδα δεκαδικών ψηφίων (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: Πώς λειτουργεί το wcstold () με εκθέτες και δεκαεξαδικά;

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

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

 Wide String = 34.901Æñ Long Double value = 34.901 End String = Æñ Wide String = 0Xfc1.a12χr12 Long Double value = 4033.63 End String = χr12

Παράδειγμα 4: wcstold περιπτώσεις για 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"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; )

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

 Wide String = inFinityxΣy Long Double value = inf End String = xΣy Wide String = NaN22Щ Long Double value = nan End String = 22Щ

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

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

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

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

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

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

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

 Wide String = 59.013 कॵ Long Double value = 59.013 End String = कॵ

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