c character conversion functions
Αυτό το σεμινάριο καλύπτει τις λειτουργίες μετατροπής χαρακτήρων C ++, όπως η μετατροπή ενός χαρακτήρα σε ακέραιο ή η συμβολοσειρά και η σειρά χαρακτήρων σε συμβολοσειρά με παραδείγματα κώδικα:
Στο C ++, καθώς αναπτύσσουμε εφαρμογές που περιλαμβάνουν πολλούς τύπους, καθίσταται απαραίτητη η μετατροπή από έναν τύπο σε έναν άλλο. Έχουμε ήδη δει μερικές βασικές μετατροπές τύπου στα προηγούμενα σεμινάρια μας.
Έχουμε επίσης δει μετατροπές συμβολοσειρών και μετατροπή αριθμητικών τύπων σε συμβολοσειρές. Εκτός από τις συναρτήσεις μετατροπής συμβολοσειρών που έχουμε ήδη δει, υπάρχουν μερικές συναρτήσεις που χρησιμοποιούνται για τη μετατροπή ενός χαρακτήρα σε άλλους τύπους δεδομένων.
Αυτές είναι οι συναρτήσεις που λαμβάνουν έναν μόνο χαρακτήρα ή έναν πίνακα χαρακτήρων και στη συνέχεια τις μετατρέπουν σε άλλους τύπους δεδομένων.
=> Διαβάστε το The Easy C ++ Training Series.
Τι θα μάθετε:
- Λειτουργίες μετατροπής χαρακτήρων C ++
- συμπέρασμα
Λειτουργίες μετατροπής χαρακτήρων C ++
Όταν πρόκειται για μετατροπή ενός χαρακτήρα σε ακέραιο ή συμβολοσειρά και μετατροπή του πίνακα χαρακτήρων σε συμβολοσειρά, οι συναρτήσεις μετατροπής αλλάζουν ελαφρώς από εκείνες των συναρτήσεων μετατροπής συμβολοσειρών.
ποιο είναι το καλύτερο εργαλείο βελτιστοποίησης υπολογιστή
Σε αυτό το σεμινάριο θα συζητήσουμε τις ακόλουθες μετατροπές:
- Μετατροπή χαρακτήρα σε ακέραιο (char σε int C ++)
- Μετατροπή χαρακτήρα σε συμβολοσειρά (char σε string C ++)
- Μετατροπή σειράς χαρακτήρων σε συμβολοσειρά
Οι δύο πρώτες μετατροπές αφορούν έναν μόνο χαρακτήρα, ενώ η τελευταία μετατροπή περιλαμβάνει έναν πίνακα χαρακτήρων.
Μετατροπή χαρακτήρα σε ακέραιο - char σε int
Για να μετατρέψουμε έναν μεμονωμένο χαρακτήρα σε ακέραιο τύπο, έχουμε δύο μεθόδους όπως αναφέρονται παρακάτω:
# 1) Με μετάδοση
Μπορούμε να χρησιμοποιήσουμε τη λειτουργία μετάδοσης για να μετατρέψουμε έναν μόνο χαρακτήρα σε ακέραιο ισοδύναμο. Σε αυτήν την περίπτωση, θα εμφανιστεί το ισοδύναμο ASCII του χαρακτήρα.
Εξετάστε την ακόλουθη μετατροπή,
char a = 'A'; int num = (int) a;
Σε αυτήν την περίπτωση, το 'num' θα έχει την τιμή 65 που είναι ισοδύναμο ASCII του χαρακτήρα 'A'.
Εναλλακτικά, μπορούμε να χρησιμοποιήσουμε την ακόλουθη λειτουργία αν θέλουμε να μετατρέψουμε έναν αριθμό αριθμών σε ακέραια τιμή.
char a = '2'; int num = a-48;
Εδώ, το 48 είναι η τιμή ASCII του 0. Αυτό που γίνεται εδώ είναι η δεύτερη γραμμή a-48 μετατρέπει σιωπηρά το char a στο αντίστοιχο ASCII και στη συνέχεια αφαιρεί από το 48 (50-48) που οδηγεί σε ακέραια τιμή 2.
# 2) Χρήση του stringstream
Όπως ήδη φαίνεται στο σεμινάριο για τις συναρτήσεις μετατροπής συμβολοσειρών, μπορούμε να μετατρέψουμε έναν μόνο χαρακτήρα που αντιπροσωπεύεται ως αντικείμενο ροής συμβολοσειράς σε ακέραιο ή οποιαδήποτε αριθμητική τιμή.
Δίνεται παρακάτω ένας κώδικας για να το αποδείξετε αυτό.
#include #include #include using namespace std; int main() { stringstream str; str <> x; cout<<'Converted value of character 5 :'< Παραγωγή:
Τιμή μετατροπής του χαρακτήρα 5: 5
Μετατροπή χαρακτήρα σε συμβολοσειρά - χαρακτήρας σε συμβολοσειρά
Υπάρχουν διάφοροι τρόποι με τους οποίους μπορούμε να μετατρέψουμε έναν μόνο χαρακτήρα σε μια συμβολοσειρά.
Ας συζητήσουμε μερικές από αυτές τις μεθόδους.
# 1) Χρήση κατασκευαστή που παρέχεται από String Class.
Πρωτότυπο λειτουργίας: συμβολοσειρά s (int n, char x);
Παράμετροι):
n => Μέγεθος της συμβολοσειράς που θα δημιουργηθεί.
x => Χαρακτήρας που πρόκειται να μετατραπεί σε συμβολοσειρά.
Τιμή επιστροφής: s tring που επιτυγχάνεται με τη μετατροπή του χαρακτήρα.
Περιγραφή: Ο κατασκευαστής της κλάσης συμβολοσειράς παίρνει το μήκος της συμβολοσειράς (n) και έναν μόνο χαρακτήρα ως παραμέτρους και στη συνέχεια μετατρέπει τον χαρακτήρα σε συμβολοσειρά.
Δίνεται παρακάτω ένα απλό παράδειγμα για να δείξετε τη μετατροπή ενός μόνο χαρακτήρα σε συμβολοσειρά.
#include #include using namespace std; int main() { string str(1,'A'); cout<<'The string obtained by converting single character : '< Παραγωγή:
Η συμβολοσειρά που λαμβάνεται με τη μετατροπή ενός μόνο χαρακτήρα: Α
Η παραπάνω μετατροπή είναι απλή. Καλούμε τον κατασκευαστή συμβολοσειρών και καθορίζουμε το μήκος της συμβολοσειράς (πρώτη παράμετρος) ως 1 αφού μετατρέπουμε έναν μόνο χαρακτήρα και η δεύτερη παράμετρος είναι ο χαρακτήρας που πρόκειται να μετατραπεί σε συμβολοσειρά (στην περίπτωση αυτή «Α»).
# 2) Χρήση std :: string Operator = Και + =
Οι τελεστές std :: string class, = και + = είναι υπερφορτωμένοι για χαρακτήρες. Έτσι μπορούμε να χρησιμοποιήσουμε αυτούς τους τελεστές για να μετατρέψουμε έναν μόνο χαρακτήρα σε συμβολοσειρά.
Αυτό αποδεικνύεται στο πρόγραμμα που φαίνεται παρακάτω.
#include #include using namespace std; int main() { string str; char c = 'B'; str = 'C'; str += c; cout<<'The string obtained by converting single character : '< Παραγωγή:
Η συμβολοσειρά που λαμβάνεται με τη μετατροπή ενός μόνο χαρακτήρα: CB
Σε αυτό το πρόγραμμα, έχουμε χρησιμοποιήσει και τους δύο υπερφορτωμένους χειριστές, =, και + =. Έχουμε δηλώσει ένα αντικείμενο συμβολοσειράς και στη συνέχεια εκχωρήσαμε έναν χαρακτήρα σε αυτό χρησιμοποιώντας τον τελεστή =. Στη συνέχεια χρησιμοποιούμε τον τελεστή + = και αντιστοιχίζουμε έναν άλλο χαρακτήρα στο αντικείμενο συμβολοσειράς.
Βλέπουμε ότι τη δεύτερη φορά ο χαρακτήρας συνδυάζεται πραγματικά με τα ήδη υπάρχοντα περιεχόμενα στο αντικείμενο συμβολοσειράς.
# 3) Χρήση διαφόρων μεθόδων std :: string
Το std :: string class υποστηρίζει διάφορες υπερφορτωμένες μεθόδους χρησιμοποιώντας τις οποίες μπορούμε να περάσουμε έναν χαρακτήρα σε συμβολοσειρά που τελικά μετατρέπει τον χαρακτήρα σε συμβολοσειρά.
Μερικές από τις μεθόδους του std :: string class είναι:
- push_back
Πρωτότυπο λειτουργίας: άκυρο push_back (char c)
Παράμετροι): c => Χαρακτήρας που θα εκχωρηθεί στη συμβολοσειρά
Αξία επιστροφής: επιστρέφει άκυρο
Περιγραφή: Αυτή η συνάρτηση είναι υπερφορτωμένη για χαρακτήρες και εκχωρεί έναν χαρακτήρα στο τέλος της συμβολοσειράς.
- προσαρτώ
Πρωτότυπο λειτουργίας: συμβολοσειρά & προσάρτημα (size_t n, char c)
Παράμετροι):
n => Ο αριθμός των φορών που πρέπει να προσαρτηθεί ο χαρακτήρας.
c => Χαρακτήρας που πρέπει να προσαρτηθεί στη συμβολοσειρά.
Αξία επιστροφής: Συμβολοσειρά που αποκτήθηκε με μετατροπή χαρακτήρα.
Περιγραφή: Η συνάρτηση προσάρτησης του std :: string παίρνει δύο ορίσματα. Το πρώτο όρισμα είναι ο αριθμός των φορών που πρέπει να αντιγραφεί ο χαρακτήρας στη συμβολοσειρά. Το δεύτερο επιχείρημα είναι ο πραγματικός χαρακτήρας που πρέπει να αντιγραφεί. Έτσι, η συνάρτηση προσάρτησης θα εκχωρήσει τόσα πολλά αντίγραφα χαρακτήρων στη συμβολοσειρά, όπως ορίζεται στο πρώτο όρισμα.
- αναθέτω
Πρωτότυπο λειτουργίας: string & assign (size_t n, char c);
Παράμετροι):
n => Αριθμός αντιγράφων του χαρακτήρα.
c => Χαρακτήρας που πρέπει να αντιγραφεί στη συμβολοσειρά.
Αξία επιστροφής: Συμβολοσειρά που αποκτήθηκε με μετατροπή χαρακτήρα.
Περιγραφή: Η συνάρτηση ανάθεσης αντικαθιστά τα τρέχοντα περιεχόμενα συμβολοσειρών με αντίγραφα n (πρώτο όρισμα) του χαρακτήρα (δεύτερο όρισμα).
- εισάγετε
Πρωτότυπο λειτουργίας: string & insert (size_t pos, size_t n, char c);
Παράμετροι):
pos => Θέση στην αρχή των χαρακτήρων που θα εισαχθούν.
n => Αριθμός αντιγράφων του χαρακτήρα.
c => Χαρακτήρας που πρόκειται να εισαχθεί στη συμβολοσειρά.
Αξία επιστροφής: Συμβολοσειρά που αποκτήθηκε με μετατροπή χαρακτήρα.
Περιγραφή: Αυτή η συνάρτηση εισάγει n (δεύτερο όρισμα) αντίγραφα του χαρακτήρα (τρίτο όρισμα) στην αρχική θέση της συμβολοσειράς που καθορίζεται από το pos (πρώτο όρισμα).
Στη συνέχεια, θα αναπτύξουμε ένα πρόγραμμα που θα δείχνει όλες τις παραπάνω λειτουργίες του std :: string class.
#include #include using namespace std; int main() { string str; str.push_back('A'); cout<<'push_back single character : '< Παραγωγή:
push_back single χαρακτήρα: Α
προσάρτημα ενός χαρακτήρα: Γ
εκχώρηση ενιαίου χαρακτήρα: D
εισαγωγή ενός χαρακτήρα: BD
Το παραπάνω πρόγραμμα δείχνει τις λειτουργίες push_back, append, assign και insert. Η έξοδος δείχνει το αποτέλεσμα ή τη συμβολοσειρά που επιστρέφεται από κάθε συνάρτηση.
# 4) Χρησιμοποιώντας std :: stringstream
Έχουμε ήδη συζητήσει τη μετατροπή αριθμητικών τύπων σε συμβολοσειρά χρησιμοποιώντας stringstream. Η μετατροπή του χαρακτήρα σε μια συμβολοσειρά ακολουθεί επίσης την ίδια αρχή όταν χρησιμοποιείται μια κλάση stringstream.
Ο δεδομένος χαρακτήρας εισάγεται στη ροή και στη συνέχεια τα περιεχόμενα γράφονται στη συμβολοσειρά.
Ας το καταστήσουμε σαφές χρησιμοποιώντας ένα πρόγραμμα C ++.
#include #include #include using namespace std; int main() { string str; stringstream mystr; mystr<>str; cout<<'The string obtained by converting single character : '< Παραγωγή:
Η συμβολοσειρά που λαμβάνεται με τη μετατροπή ενός μόνο χαρακτήρα: Α
Αρχικά εισάγουμε το χαρακτήρα στο αντικείμενο ροής και μετά αυτό το buffer γράφεται στο αντικείμενο συμβολοσειράς. Έτσι, η έξοδος του προγράμματος δείχνει τα περιεχόμενα του αντικειμένου συμβολοσειράς που είναι ένας μοναδικός χαρακτήρας.
Μετατροπή συστοιχίας χαρακτήρων σε συμβολοσειρά
Η κλάση std :: string έχει πολλές μεθόδους που μπορούν να είναι χρήσιμες κατά την αντιμετώπιση των συστοιχιών χαρακτήρων. Ως εκ τούτου, είναι σκόπιμο να μετατρέψετε συστοιχίες χαρακτήρων σε συμβολοσειρά αντικειμένων και στη συνέχεια να τα χρησιμοποιήσετε, ώστε να μπορούμε να γράφουμε αποτελεσματικά προγράμματα.
Υπάρχουν δύο μέθοδοι για τη μετατροπή του πίνακα χαρακτήρων σε συμβολοσειρά όπως φαίνεται παρακάτω.
# 1) Χρήση String Κατασκευαστή
Όπως έχει ήδη συζητηθεί για τη μετατροπή ενός μεμονωμένου χαρακτήρα σε συμβολοσειρά, μπορούμε να κάνουμε χρήση του κατασκευαστή συμβολοσειρών για να μετατρέψουμε έναν πίνακα χαρακτήρων σε συμβολοσειρά.
Πρωτότυπο λειτουργίας: συμβολοσειρά (const char * s);
Παράμετροι: s => πίνακας χαρακτήρων με μηδενικό τερματισμό για μετατροπή σε συμβολοσειρά
Αξία επιστροφής: string => μετατροπή συμβολοσειράς
Περιγραφή: Αυτός ο υπερφορτωμένος κατασκευαστής της κλάσης std :: string παίρνει τον πίνακα χαρακτήρων ή C-string ως όρισμα και επιστρέφει τη συμβολοσειρά.
Το παρακάτω πρόγραμμα δείχνει αυτήν τη μετατροπή.
#include #include using namespace std; int main() { char myarray[] = {'Software Testing Help'}; string mystr(myarray); cout<<'Converted string: '< Παραγωγή:
Μετατροπή συμβολοσειράς: Βοήθεια δοκιμής λογισμικού
Το παραπάνω πρόγραμμα είναι αρκετά απλό. Το μόνο που χρειάζεται είναι μόνο μια κλήση στο std :: string buildor για να μετατρέψετε τον δεδομένο πίνακα χαρακτήρων σε συμβολοσειρά.
# 2) Χρήση = Υπερφορτωμένος χειριστής
Μια άλλη προσέγγιση για τη μετατροπή του πίνακα χαρακτήρων σε αντικείμενο συμβολοσειράς είναι να χρησιμοποιήσετε έναν υπερφορτωμένο χειριστή =. Σε αυτό μπορούμε να αντιστοιχίσουμε άμεσα τον πίνακα χαρακτήρων σε αντικείμενο συμβολοσειράς χρησιμοποιώντας το = χειριστή και τα περιεχόμενα θα μεταφερθούν στη συμβολοσειρά.
Το παρακάτω παράδειγμα το δείχνει.
#include #include using namespace std; int main() { char myarray[] = {'Software Testing Help'}; string mystr; mystr = myarray; cout<<'Converted string: '< Παραγωγή:
Μετατροπή συμβολοσειράς: Βοήθεια δοκιμής λογισμικού
Το παραπάνω πρόγραμμα εκχωρεί τη συστοιχία απευθείας σε ένα αντικείμενο συμβολοσειράς χρησιμοποιώντας = χειριστή που έχει ως αποτέλεσμα τα περιεχόμενα του πίνακα χαρακτήρων να αντιγραφούν σε αντικείμενο συμβολοσειράς.
συμπέρασμα
Έχουμε δει διάφορες μεθόδους για τη μετατροπή ενός μεμονωμένου χαρακτήρα καθώς και των συστοιχιών χαρακτήρων σε συμβολοσειρά αντικειμένων. Δεδομένου ότι η κλάση std :: string έχει πολλές λειτουργίες που μας επιτρέπουν να χειριζόμαστε τις συμβολοσειρές αποτελεσματικά, είναι πάντα χρήσιμο να δουλεύουμε με δεδομένα χαρακτήρων μετατρέποντάς τα πρώτα σε συμβολοσειρές.
Περαιτέρω ανάγνωση = >> Μετατροπή Char σε Int σε Java
Περαιτέρω ανάγνωση = >> Μετατροπή Char σε συμβολοσειρά σε Java
Μπορούμε επίσης να χρησιμοποιήσουμε μεθόδους κλάσης για να μετατρέψουμε δεδομένα χαρακτήρων σε συμβολοσειρές. Σε αυτό, εισάγουμε πρώτα τα δεδομένα στη ροή και μετά γράφουμε αυτό το buffer σε ένα αντικείμενο συμβολοσειράς.
Στα επόμενα σεμινάρια μας, θα συζητήσουμε μια κλάση stringstream και περισσότερες λειτουργίες βιβλιοθήκης στο C ++ λεπτομερώς.
=> Δείτε εδώ για να δείτε A-Z Of C ++ εκπαιδευτικά σεμινάρια.
Συνιστώμενη ανάγνωση
- Λειτουργίες συμβολοσειράς Python
- Java String με String Buffer και String Builder Tutorial
- C ++ Ταξινόμηση χαρακτήρων και συναρτήσεις μεταμόρφωσης
- Λειτουργίες συμβολοσειράς VBScript: Λειτουργίες VBScript inStr, Replace, Mid και Trim
- Εκμάθηση Python String Split
- C # String Tutorial - Μέθοδοι συμβολοσειράς με παραδείγματα κώδικα
- Χορδές σε C ++ με παραδείγματα
- Λειτουργίες βιβλιοθήκης στο C ++