Πώς να χρησιμοποιήσετε το C ++ String Literal

How Use C String Literal



Το πληκτρολόγιο του υπολογιστή έχει τυπωμένους χαρακτήρες. Όταν πατάτε ένα πλήκτρο, βλέπετε τον χαρακτήρα στην οθόνη. Σημείωση: ο χώρος είναι επίσης ένας χαρακτήρας. Μια συμβολοσειρά κυριολεκτική είναι μια ακολουθία χαρακτήρων. Αυτό το άρθρο εξηγεί πώς να χρησιμοποιείτε κυριολεκτικά συμβολοσειρές C ++. Θα πρέπει να γνωρίζετε για τους πίνακες και τους δείκτες C ++ για να κατανοήσετε αυτό το άρθρο.

Χαρακτήρας κυριολεκτικός

Ένας κυριολεκτικός χαρακτήρας είναι ένας χαρακτήρας σε μεμονωμένα εισαγωγικά. Ετσι,







απανθρακώνωταυτότητα1= 'ΠΡΟΣ ΤΟ'? απανθρακώνωταυτόσημο2= 'σι'? απανθρακώνωταυτότητα3= '4'? απανθρακώνωταυτότητα4= '6'?

είναι όλοι διαφορετικοί ορισμοί των χαρακτήρων. Σημειώστε ότι ένα ψηφίο σε μεμονωμένα εισαγωγικά είναι χαρακτήρας και όχι ακέραιος.



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



απανθρακώνωταυτότητα1= '' ''?

είναι ένας χαρακτήρας.





Ένα μόνο σύμβολο σε διπλά εισαγωγικά δεν είναι χαρακτήρας. είναι μια σειρά ενός χαρακτήρα. Άρα το Α ή το Γ ή το 2 δεν είναι χαρακτήρας αλλά είναι μια συμβολοσειρά ενός χαρακτήρα το καθένα.

Η μεταβλητή ενός χαρακτήρα μπορεί να αναδιατεθεί, αργότερα στο πρόγραμμα, ως εξής:



απανθρακώνωταυτότητα= 'Χ'?
ταυτότητα= 'ΚΑΙ'?

Για να σταματήσετε την αλλαγή ενός χαρακτήρα που έχει εκχωρηθεί σε ένα αναγνωριστικό, αργότερα στο πρόγραμμα, προηγηθείτε του ορισμού με τη δεσμευμένη λέξη, const, ως εξής:

const απανθρακώνωταυτότητα= 'ρε'?

Η μεταβλητή, ταυτότητα λέγεται ότι είναι μόνο για ανάγνωση.

String Literal

Μια συμβολοσειρά κυριολεκτική είναι μια ακολουθία χαρακτήρων σε διπλά εισαγωγικά. Ετσι,

απανθρακώνωταυτότητα1[] = 'Σε αγαπώ'? απανθρακώνωταυτόσημο2[] = «Μισώ τους 3 από εσάς»? απανθρακώνωταυτότητα3[]
= 'είμαστε ο κόσμος'? απανθρακώνωταυτότητα4[] = 'Γειά σου Κόσμε!'?

είναι όλοι διαφορετικοί ορισμοί των κυριολεκτικών χορδών. Σημειώστε τη χρήση διπλών εισαγωγικών. Δεν υπάρχει τίποτα σαν μια συνηθισμένη μεταβλητή για μια συμβολοσειρά. Μια συμβολοσειρά κυριολεκτική είναι μια σειρά χαρακτήρων, όπου αντί για οριοθέτηση με {}, η ακολουθία οριοθετείται με. Οι χαρακτήρες δεν χωρίζονται με κόμματα. Οποιοσδήποτε αριθμός μεγαλύτερος από τον αριθμό των χαρακτήρων στην κυριολεκτική συμβολοσειρά μπορεί να τοποθετηθεί στις αγκύλες. Ωστόσο, είναι καλύτερα να αφήσετε τις τετράγωνες αγκύλες άδειες.

Ένας μόνο χαρακτήρας σε διπλά εισαγωγικά δεν είναι χαρακτήρας. είναι μια σειρά ενός χαρακτήρα. Άρα το Α ή το Γ ή το 2 δεν είναι χαρακτήρας, αλλά μια συμβολοσειρά ενός χαρακτήρα το καθένα.

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

Ενιαίο και διπλό απόσπασμα σε χαρακτήρα ή κυριολεκτικά

Για να έχετε ένα μόνο απόσπασμα ως χαρακτήρα, κάντε κάτι σαν,

απανθρακώνωταυτότητα= ' ''?

Για να έχετε ένα διπλό απόσπασμα ως χαρακτήρα σε μια χορδή κυριολεκτικά, κάντε κάτι σαν,

απανθρακώνωταυτότητα[] = 'Μακριά'CD'?

Το blashlash χρησιμοποιείται σε ακολουθία διαφυγής, για να αποφευχθεί η σύγκρουση με οριοθέτες. Για να έχετε ένα διπλό απόσπασμα ως χαρακτήρα, δεν υπάρχει ανάγκη για την ανάκρουση: «είναι εντάξει. Για να έχετε ένα μόνο απόσπασμα σε μια κυριολεκτική συμβολοσειρά, δεν υπάρχει ανάγκη για την ανάστροφη αναστροφή: το ab’cd είναι εντάξει.

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

Ακολουθία διαφυγής

Η ακολουθία διαφυγής είναι μία από τις εξής:

''? \ προς το β φά n r>> t v

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

  • ’: Χρησιμοποιείται ως μοναδικός χαρακτήρας εισαγωγικού, μέσα σε μεμονωμένα εισαγωγικά.
  • : χρησιμοποιείται ως χαρακτήρας διπλής παράθεσης, εντός κυριολεκτικής.
  • ? : Από ? είναι ένας δεσμευμένος χαρακτήρας, θα πρέπει να ξεφύγει κατά γράμμα.
  • \: η ανάστροφη αναστροφή πρέπει να διαφεύγει ως χαρακτήρας ή ως συμβολοσειρά κυριολεκτική, ώστε να μην έχει κάποιο άλλο νόημα.
  • a: ηχεί ένα κουδούνι συναγερμού μία φορά, όταν χρησιμοποιείται ως χαρακτήρας ή μέσα σε μια κυριολεκτική συμβολοσειρά.
  • b: προκύπτει ως backspace στην οθόνη μέσα σε μια κυριολεκτική συμβολοσειρά, απογειώνοντας τον προηγούμενο χαρακτήρα.
  • f: προκαλεί την τροφοδοσία της επόμενης σελίδας στον εκτυπωτή όταν χρησιμοποιείται ως χαρακτήρας ή εντός κυριολεκτικής.
  • r: επιστρέφει τον κέρσορα, όπου θα εκτυπωθεί ο επόμενος χαρακτήρας, αλλά εντός της τρέχουσας γραμμής.
  • n: επιστρέφει τον κέρσορα στην αρχή της επόμενης γραμμής ή απλώς στην επόμενη γραμμή, ανάλογα με το λειτουργικό σύστημα.
  • t: δημιουργεί μια οριζόντια καρτέλα.
  • v: δημιουργεί μια κάθετη καρτέλα.

Λειτουργίες με χαρακτήρες

Αληλουχία

Εξ ορισμού, δύο κυριολεκτικά συμβολοσειρών μπορούν να ενωθούν με το διάστημα ως εξής:

απανθρακώνωταυτότητα[] = 'αλφάβητο' 'def'?
κόστος<<ταυτότητα<< ' n'?

Η έξοδος είναι: abcdef. Αυτός ο ορισμός μπορεί να επεκταθεί σε περισσότερες από δύο κυριολεκτικές. Σημείωση: η δήλωση είναι ένας ορισμός, όχι μόνο μια ανάθεση. Ο ορισμός μπορεί ακόμη και να συνεχίσει στην επόμενη γραμμή με χώρο που χωρίζει τις γραμμές ως εξής:

απανθρακώνωταυτότητα[] = 'αλφάβητο' 'def'
'να λάβει υπόψη'?
κόστος<<ταυτότητα<< ' n'?

Η έξοδος είναι, abcdefghi.

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

Χειριστές Ισότητας

Οι ίδιοι χαρακτήρες στην ίδια περίπτωση είναι ίσοι. Δεν είναι ίσες αν δεν είναι της ίδιας υπόθεσης. Σκεφτείτε,

bool αποτέλεσμα= 'ΣΙ' == 'ΣΙ'?
κόστος<<αποτέλεσμα<< ' n'?

== σημαίνει ίσος, ενώ = σημαίνει εκχωρημένος-σε και όχι ίσος. Η έξοδος είναι 1 για true. Σκεφτείτε,

bool αποτέλεσμα= 'ΣΙ' == 'σι'?
κόστος<<αποτέλεσμα<< ' n'?

Η έξοδος είναι 0 για false. Σκεφτείτε,

bool αποτέλεσμα= 'σι' == 'ντο'?
κόστος<<αποτέλεσμα<< ' n'?

Η έξοδος είναι 0 για false. Σκεφτείτε,

bool αποτέλεσμα= 'ΣΙ' ! = = 'ΣΙ'?
κόστος<<αποτέλεσμα<< ' n'?

! = σημαίνει όχι-ίσο, ενώ = σημαίνει εκχωρημένο-σε και όχι-ίσο. Η έξοδος είναι 0 για false. Σκεφτείτε,

bool αποτέλεσμα= 'ΣΙ' ! = = 'σι'?
κόστος<<αποτέλεσμα<< ' n'?

Η έξοδος είναι 1 για true. Σκεφτείτε,

bool αποτέλεσμα= 'σι' ! = = 'ντο'?
κόστος<<αποτέλεσμα<< ' n'?

Η έξοδος είναι 1 για true.

Έτσι, == και! = Είναι τελεστές ισότητας.

Σχετικοί χειριστές

Για τους συνηθισμένους χαρακτήρες στο C ++, με αύξουσα σειρά, οι αριθμοί έρχονται πριν από κεφαλαία γράμματα, τα οποία έρχονται πριν από πεζά γράμματα.

Έτσι= εξηγούνται ανάλογα.

Η συμβολοσειρά κυριολεκτικά ως αντικείμενο

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

intarr[] = {3, 4, 5, 6, 7}?
απανθρακώνωΠ[] = {'σε', 'ή', 'Μ', 'προς το', 'n'}?
απανθρακώνωstri[] = 'γυναίκα'?

Ο πρώτος πίνακας είναι ένας πίνακας ints και έχει πέντε στοιχεία. Ο δεύτερος και ο τρίτος πίνακας είναι πίνακες χαρακτήρων με διαφορετικά ονόματα, αλλά τον ίδιο αριθμό στοιχείων. Ο δεύτερος και ο τρίτος πίνακας είναι οι ίδιοι, αλλά για τα ονόματά τους. Το περιεχόμενο κειμένου της δεύτερης συστοιχίας ορίζεται από τιράντες. οι χαρακτήρες χωρίζονται με κόμματα και κάθε χαρακτήρας είναι σε μονά εισαγωγικά. Το περιεχόμενο κειμένου του τρίτου πίνακα ορίζεται με διπλά εισαγωγικά. οι χαρακτήρες δεν χωρίζονται με κόμματα και κάθε χαρακτήρας δεν είναι σε ενιαία εισαγωγικά. Ο δεύτερος και ο τρίτος πίνακας είναι δύο τρόποι παραγωγής μιας χορδής, με τον τρίτο τρόπο να είναι ο καλύτερος τρόπος.

Το arr είναι ένας σταθερός δείκτης για το πρώτο στοιχείο του πίνακα του, που σημαίνει ότι το arr θα δείχνει πάντα τη θέση που έχει τον ακέραιο, 3 ακόμη και αν η τιμή του 3 αλλάξει. Το μέγεθος του πίνακα, πέντε στοιχεία, δεν παραμένει πραγματικά σταθερό. Ωστόσο, κάθε μία από τις τιμές του πίνακα μπορεί να αλλάξει.

Το str είναι ένας σταθερός δείκτης για το πρώτο στοιχείο της συστοιχίας του, που σημαίνει ότι το str θα δείχνει πάντα τη θέση που έχει τον χαρακτήρα, 'w' ακόμα κι αν αλλάξει η τιμή του 'w'. Το μέγεθος του πίνακα χαρακτήρων, πέντε στοιχείων, δεν παραμένει πραγματικά σταθερό. Ωστόσο, κάθε μία από τις τιμές της κυριολεκτικής μπορεί να αλλάξει.

Το stri είναι ένας σταθερός δείκτης για το πρώτο στοιχείο της κυριολεκτικής (συστοιχίας) του, που σημαίνει ότι το stri θα δείχνει πάντα τη θέση που έχει τον χαρακτήρα, w ακόμη και αν η τιμή του w αλλάξει. Το μέγεθος της συμβολοσειράς κυριολεκτικά (πίνακας), πέντε στοιχείων, δεν παραμένει πραγματικά σταθερό. Ωστόσο, κάθε μία από τις τιμές της κυριολεκτικής μπορεί να τροποποιηθεί.

Τι είναι σταθερό σε έναν πίνακα ή συμβολοσειρά κυριολεκτικά; Η διεύθυνση μνήμης του πρώτου στοιχείου του πίνακα ή της κυριολεκτικής παραμένει ως τιμή του ονόματος (αναγνωριστικό) του πίνακα ή κυριολεκτική και δεν μπορεί να αλλάξει. Λοιπόν, το μέγεθος του πίνακα ή κυριολεκτικά δεν παραμένει σταθερό. Κάθε τιμή στον πίνακα ή στην κυριολεκτική μπορεί να αλλάξει. Ο παρακάτω κώδικας δείχνει πώς έχει αλλάξει το τέταρτο στοιχείο καθενός από τους πίνακες:

intarr[] = {3, 4, 5, 6, 7}?
απανθρακώνωΠ[] = {'σε', 'ή', 'Μ', 'προς το', 'n'}?
απανθρακώνωstri[] = 'γυναίκα'?

arr[3] = 9?
Π[3] = 'Και'?
stri[3] = 'Και'?

κόστος<<arr[3] << ' n'?
κόστος<<Π<< ' n'?
κόστος<<stri<< ' n'?

Η έξοδος είναι:

9
γυναίκες γυναίκες
γυναίκες

Σημειώστε ότι τα στοιχεία μιας καθορισμένης συμβολοσειράς κυριολεκτικά, όπως για τον τρίτο παραπάνω ορισμό, είναι προσβάσιμα με το ευρετήριο πίνακα (subscript). Ο λόγος για τη δεύτερη γραμμή της εξόδου δίνεται παρακάτω.

Ορισμός Υπογραφή

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

Για την κυριολεκτική συμβολοσειρά, ο ακέραιος αριθμός πρέπει να είναι τουλάχιστον 1 υψηλότερος από τον αριθμό των χαρακτήρων στη συμβολοσειρά. Αυτό συμβαίνει επειδή ο μηδενικός χαρακτήρας ( 0) προστίθεται πάντα από τον μεταγλωττιστή, στο τέλος ενός πίνακα που είναι μια συμβολοσειρά, οριοθετημένη με διπλά εισαγωγικά. Ο μηδενικός χαρακτήρας δεν προστίθεται στο τέλος του δεύτερου πίνακα παραπάνω, επειδή δεν είναι επίσημη συμβολοσειρά. Ο τρίτος πίνακας είναι μια επίσημη συμβολοσειρά. Ο παρακάτω κώδικας εμφανίζει τις ελάχιστες τιμές συνδρομής.

intarr[5] = {3, 4, 5, 6, 7}?
απανθρακώνωΠ[5] = {'σε', 'ή', 'Μ', 'προς το', 'n'}?
απανθρακώνωstri[6] = 'γυναίκα'?

Για να γίνει ο δεύτερος ορισμός επίσημη συμβολοσειρά, ο μηδενικός χαρακτήρας πρέπει να προστεθεί ως εξής:

intarr[5] = {3, 4, 5, 6, 7}?
απανθρακώνωΠ[6] = {'σε', 'ή', 'Μ', 'προς το', 'n', ' 0'}?
απανθρακώνωstri[6] = 'γυναίκα'?

Η έξοδος πρέπει τώρα να είναι,

9
γυναίκες
γυναίκες

χωρίς τις δεύτερες γυναίκες. Σημειώστε ότι ο αντίστοιχος συντελεστής για τον δεύτερο πίνακα είναι 6 και όχι 5 όπως ήταν.

Σταθερές κυριολεκτικές αξίες

Για να σταματήσετε να τροποποιείτε οποιονδήποτε χαρακτήρα στα διπλά εισαγωγικά που έχουν εκχωρηθεί σε ένα αναγνωριστικό, αργότερα στο πρόγραμμα, προηγηθείτε του ορισμού με τη δεσμευμένη λέξη, const, ως εξής:

const απανθρακώνωταυτότητα[] = 'Σε αγαπώ'?

Λειτουργίες με String Literals

Λειτουργίες Ισότητας

Οι τελεστές ισότητας είναι == και! =. Όταν συγκρίνονται μεταβλητές (αναγνωριστικά) δύο συμβολοσειρών, είναι οι δείκτες (διευθύνσεις) των κυριολεκτικών που καταλήγουν να συγκρίνονται. αυτό είναι λάθος. Για να συγκρίνετε συμβολοσειρές, τα κυριολεκτικά πρέπει να συγκριθούν, όπως στον ακόλουθο κώδικα:

bool αποτέλεσμα= 'γυναίκα' == 'γυναίκα'?
κόστος<<αποτέλεσμα<< ' n'?

Η έξοδος είναι 1 για true. Η σύγκριση γίνεται με τον τρόπο του λεξικού, αλλά με τους αριθμούς να έρχονται πρώτοι σε αύξουσα σειρά, πριν από κεφαλαία γράμματα, τα οποία έρχονται πριν από πεζά γράμματα. Η έξοδος του ακόλουθου κώδικα είναι 0, για false.

bool αποτέλεσμα= 'γυναίκα' ! = = 'γυναίκα'?
κόστος<<αποτέλεσμα<< ' n'?

Σχεσιακοί χειριστές με γράμματα συμβολοσειράς

Οι σχεσιακοί τελεστές δεν λειτουργούν με κυριολεκτικά συμβολοσειρών.

Raw String Literal

Μια ακατέργαστη συμβολοσειρά κυριολεκτική, επιτρέπει σε μια συμβολοσειρά να εμφανίζεται ως δακτυλογραφημένη, αγνοώντας τις ακολουθίες διαφυγής και σεβόμενη τις νέες γραμμές. Εξετάστε τον ακόλουθο κώδικα:

απανθρακώνωΠ[] =R'(αλφάβητο\d efg he
klmn n'
'opq
πρώτη) ';
κόστος<< str << '
n'?

Η έξοδος είναι:

abc \ d efg he
klmn n'' opq
πρώτος

Στον κώδικα, η ακατέργαστη συμβολοσειρά αρχίζει με R, ακολουθούμενη από και (. Τελειώνει με) και.

Κυριολεκτικοί τύποι κύριας συμβολοσειράς C ++

απανθρακώνω

Ο τύπος char είναι ο αρχικός τύπος C ++ και συνήθως αποθηκεύει έναν χαρακτήρα σε 8 bits.

char16_t

Αυτό αποθηκεύει έναν χαρακτήρα σε 16 bit.

char32_t

Αυτό αποθηκεύει έναν χαρακτήρα σε 32 bits.

wchar_t

Τα char16_t και char32_t είναι ευρείς χαρακτήρες. Το wchar_t είναι ένας ευρύς χαρακτήρας που είναι ιδιόκτητος και καθορίζεται από την εφαρμογή.

συμπέρασμα

Ένας κυριολεκτικός χαρακτήρας είναι ένας μόνο χαρακτήρας σε μεμονωμένα εισαγωγικά. Μια ακολουθία διαφυγής είναι ένας χαρακτήρας που μπορεί επίσης να είναι σε μεμονωμένα εισαγωγικά. Μια συμβολοσειρά κυριολεκτική είναι μια ακολουθία χαρακτήρων σε διπλά εισαγωγικά. Μια συμβολοσειρά κυριολεκτική είναι μια σειρά χαρακτήρων που τελειώνουν με 0. Οι τελεστές ισότητας και σχέσεων λειτουργούν με κυριολεκτικούς χαρακτήρες. Οι τελεστές της ισότητας λειτουργούν με κυριολεκτικά συμβολοσειράς, αλλά οι τελεστές σχέσης δεν λειτουργούν με κυριολεκτικά συμβολοσειρών. Τα αναγνωριστικά χαρακτήρων μπορούν να χρησιμοποιηθούν σε συγκρίσεις, αλλά τα αναγνωριστικά συμβολοσειράς δεν πρέπει να χρησιμοποιούνται σε συγκρίσεις. Μια ακατέργαστη συμβολοσειρά κυριολεκτικά επιτρέπει σε μια συμβολοσειρά να εμφανίζεται ως δακτυλογραφημένη, αγνοώντας τις ακολουθίες διαφυγής και σεβόμενη τις νέες γραμμές.

Chrys