C ++ wcstoull () - C ++ Τυπική βιβλιοθήκη

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

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

 Για τη βάση 10 και την ευρεία συμβολοσειρά L "29hi $" Έγκυρο αριθμητικό μέρος -> 29 Πρώτος χαρακτήρας μετά από έγκυρο αριθμητικό μέρος -> h

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

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

 χωρίς υπογραφή μεγάλο wcstoull (const wchar_t * str, wchar_t ** str_end, int base);

Η συνάρτηση wcstoull () παίρνει μια ευρεία συμβολοσειρά str, έναν δείκτη σε μεγάλο χαρακτήρα str_end και μια ακέραια τιμή - βάση ως παράμετρος.

Στη συνέχεια ερμηνεύει το περιεχόμενο της ευρείας συμβολοσειράς ως μη υπογεγραμμένο ακέραιο αριθμό της δεδομένης βάσης και επιστρέφει μια μη υπογεγραμμένη τιμή μεγάλης διάρκειας int.

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

  • str: Μια ευρεία συμβολοσειρά που έχει την αναπαράσταση ενός μη υπογεγραμμένου ακέραιου αριθμού.
  • str_end: Ένας δείκτης σε έναν δείκτη σε έναν ευρύ χαρακτήρα. Η τιμή του str_end ορίζεται από τη συνάρτηση στον επόμενο χαρακτήρα στο str μετά τον τελευταίο έγκυρο χαρακτήρα. Αυτή η παράμετρος μπορεί επίσης να είναι μηδενικός δείκτης, οπότε δεν χρησιμοποιείται.
  • base: Η βάση της ακέραιας τιμής. Το σύνολο των έγκυρων τιμών για τη βάση είναι (0, 2, 3,…, 35, 36).

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

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

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

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

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"101aau16b6"; wchar_t str2() = L"59"; wchar_t *end; unsigned long long value; int base = 10; value = wcstoull(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Unsigned Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoull(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Unsigned Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Τιμή συμβολοσειράς = 101aa ᚶ Μη υπογεγραμμένη τιμή Long Long Int = 101 End String = aa value Τιμή συμβολοσειράς = 59 Τιμή χωρίς υπογραφή Long Long Int = 59 End String =

Μια έγκυρη ακέραια τιμή για τη συνάρτηση wcstoull () αποτελείται από:

  • Ένα προαιρετικό σύμβολο + ή -.
  • Ένα πρόθεμα 0 για οκταδική βάση (ισχύει μόνο όταν βάση = 8 ή 0).
  • Πρόθεμα 0x ή 0X για δεκαεξαδική βάση (ισχύει μόνο όταν η βάση = 16 ή 0).
  • Μια ακολουθία ψηφίων ή / και αλφαβήτων (εάν η βάση είναι μεγαλύτερη από 10)

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

Οι έγκυρες τιμές για τη βάση παραμέτρων είναι (0, 2, 3,…, 35, 36). Ένα σύνολο έγκυρων ψηφίων για τη βάση 2 είναι (0, 1), για τη βάση 3 είναι (0, 1, 2) και ούτω καθεξής. Για βάσεις που ξεκινούν από 11 έως 36, τα έγκυρα ψηφία περιλαμβάνουν αλφάβητα.

Το σύνολο των έγκυρων ψηφίων για τη βάση 11 είναι (0, 1,…, 9, A, a), για τη βάση 12 είναι (0, 1,…, 9, A, a, B, b) και ούτω καθεξής.

Παράδειγμα 2: συνάρτηση wcstoull () με διαφορετικές βάσεις

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wchar_t str() = L"311bzu03feu03ff"; wcout << str << L" to Unsigned Long Long Int with base-5 = " << wcstoull(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Long Int with base-12 = " << wcstoull(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Long Int with base-36 = " << wcstoull(str, &end, 36) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

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

 311bzϾϿ σε Long Long Int χωρίς υπογραφή με βάση-5 = 81 End String = bzϾϿ 311bzϾϿ έως Long Long Int χωρίς υπογραφή με βάση-12 = 5351 String End = zϾϿ 311bzϾϿ σε Long Long Int χωρίς υπογραφή με βάση-36 = 5087231 End String = ϾϿ

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

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

 (κενό διάστημα) (- | +) (0 | 0x) (αλφαριθμητικοί χαρακτήρες)

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

Παράδειγμα 3: συνάρτηση wcstoull () για κορυφαίο κενό διάστημα και μη έγκυρη μετατροπή

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L" 205u03e2x to Unsigned Long Long Int with base-5 = " << wcstoull(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Unsigned Long Long Int with base-12 = " << wcstoull(L"xu019cz201", &end, 12) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

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

 205Ϣx έως μη υπογεγραμμένο Long Long Int με βάση-5 = 10 End String = 5Ϣx xƜz201 to Unsigned Long Long Int με βάση-12 = 0 End String = xƜz201

Εάν η βάση είναι 0, η αριθμητική βάση καθορίζεται αυτόματα εξετάζοντας τη μορφή της συμβολοσειράς. Εάν το πρόθεμα είναι 0, η βάση είναι οκτάλη (8). Εάν το πρόθεμα είναι 0x ή 0X, η βάση είναι δεκαεξαδική (16), διαφορετικά η βάση είναι δεκαδική (10).

Παράδειγμα 4: συνάρτηση wcstoull () με βάση 0

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L"0539u1e84 to Unsigned Long Long Int with base-0 = " << wcstoull(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Unsigned Long Long Int with base-0 = " << wcstoull(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Unsigned Long Long Int with base-0 = " << wcstoull(L"119xu060f", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

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

 0539Ẅ έως μη υπογεγραμμένο Long Long Int με βάση-0 = 43 End String = 9Ẅ 0xa31 ע to Unsigned Long Long Int with base-0 = 2609 End String = ע 119x ؏ to Unsigned Long Long Int με βάση-0 = 119 End String = x ؏

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