cpp:strings
This is an old revision of the document!
Table of Contents
Αλφαριθμητικά
Τα αλφαριθμητικά μπορούν να αναπαρασταθούν με δύο τρόπους
- Μέσω μιας ακολουθίας χαρακτήρων που περιέχει το χαρακτήρα '\0' στο τέλος.
- Μέσω της κλάσης string.
Aκολουθία χαρακτήρων που περιέχει το χαρακτήρα '\0' στο τέλος
char str[12] = "Hello";
ή
char str[12] = { 'H', 'e', 'l', 'l', 'o', '\0' };
Στη C++ είναι διαθέσιμες οι συναρτήσεις διαχείρισης συμβολοσειρών που προέρχονται από τη C, όπως οι παρακάτω:
char *strcpy(char *dest, const char *src); | Αντιγράφει το src στο dest . Τα αλφαριθμητικά δεν πρέπει να επικαλύπτονται μεταξύ τους και θα πρέπει να υπάρχει αρκετός διαθέσιμος χώρος στο dest ώστε να αντιγραφεί το src χωρίς να βγούμε εκτός ορίων. |
char *strcat(char *dest, const char *src); | Ενθέτει το src αμέσως μετά το dest . Αποθηκεύει το αποτέλεσμα στο dest . Τα αλφαριθμητικά δεν πρέπει να επικαλύπτονται μεταξύ τους και θα πρέπει να υπάρχει αρκετός διαθέσιμος χώρος στο dest για το προκύπτον αλφαριθμητικό. |
int strcmp(const char *s1, const char *s2); | Συγκρίνει τα s1 και s2 μεταξύ τους και επιστρέφει μικρότερο, μεγαλύτερο ή ίσο με το μηδέν εάν το s1 είναι μικρότερο μεγαλύτερο ή ίσο με το s2 . |
size_t strlen(const char *s); | Επιστρέφει τον αριθμό των χαρακτήρων (μήκος) του αλφαριθμητικού. |
char *strchr(const char *str, int c); | Επιστρέφει ένα δείκτη στην πρώτη εμφάνιση του c στο str . Eπιστρέφει NULL εάν δεν εμφανίζεται το c στο str . |
char *strrchr(const char *str, int c); | Επιστρέφει ένα δείκτη στην τελευταία εμφάνιση του c στο str . Eπιστρέφει NULL εάν δεν εμφανίζεται το c στο str . |
char *strstr(const char *haystack, const char *needle); | Επιστρέφει ένα δείκτη στην πρώτη εμφάνιση του needle στο heystack . Eπιστρέφει NULL εάν δεν εμφανίζεται το needle στο heystack . |
char *strstr(const char *haystack, const char *needle); | Επιστρέφει ένα δείκτη στην τελευταία εμφάνιση του needle στο heystack . Επιστρέφει NULL εάν δεν εμφανίζεται το needle στο heystack . |
Η κλάση String
Η standard βιβλιοθήκη της C++ διαθέτει την κλάση string η οποία έχει το πλεονέκτημα ότι δεν χρειάζεται να σας απασχολεί η δέσμευση της απαραίτητης μνήμης για την αποθήκευση των αλφαριθμητικών.
Οι βασικές μέθοδοι της κλάσης string είναι οι εξής:
Δείτε το παρακάτω παράδειγμα χρήσης της κλάσης string:
- string.cpp
int main(int argc, char *argv[]) { string str = "Hello World!"; cout << str << endl; str.append(" How are you?"); cout << str << endl; str = "Hello Wordl!"; str += " How are you?"; cout << str << endl; }
Κατασκευαστές
default constructor | string(); |
copy constructor | string (const string& str); |
substring constructor | string (const string& str, size_t pos, size_t len = npos); |
from c-string constructor | string (const char* s); |
from c-string sequence | string (const char* s, size_t n); |
fill with c | string (size_t n, char c); |
Παράδειγμα χρήσης κατασκευαστών
- strings_constructor.cpp
#include <iostream> using namespace std; int main() { string str = "Hello World!"; string copy(str); string substring(str, 0, 5); const char *p = str.c_str(); string fromCString(p); string fromCSequence(p, 8); string fillwithDollars(5, '$'); cout << str << endl; cout << copy << endl; cout << substring << endl; cout << p << endl; cout << fromCString << endl; cout << fromCSequence << endl; cout << fillwithDollars << endl; }
Μέθοδοι
Χωρητικότητα και μέγεθος αλφαριθμητικού
size_t size() const; | Return size of string (public member function ) |
size_t length() const; | Μέθοδος ανάλογη της μεθόδου size |
size_t capacity() const; | Χωρητικότητα του αλφαριθμητικού (σε bytes) |
void resize (size_t n, char c); | Επεκτείνεται το αλφαριθμητικό ώστε να έχει νέο μέγεθος n
. |
void reserve (size_t n = 0); | Μεταβάλλει τη χωρητικότητα του αλφαριθμητικού. |
void clear(); | Διαγράφει τα περιεχόμενα του αλφαριθμητικού |
bool empty() const | Επιστρέφει true εάν το αλφαριθμητικό είναι άδειο. |
Πρόσβαση σε χαρακτήρες του αλφαριθμητικού
Μεταβολή του αλφαριθμητικού
Σύγκριση, αναζήτηση, εξαγωγή υπο-αλφαριθμητικών
Διάτρεξη
cpp/strings.1493740246.txt.gz · Last modified: 2017/05/02 14:50 (external edit)