User Tools

Site Tools


cpp:strings

This is an old revision of the document!


Αλφαριθμητικά

Τα αλφαριθμητικά μπορούν να αναπαρασταθούν με δύο τρόπους

  1. Μέσω μιας ακολουθίας χαρακτήρων που περιέχει το χαρακτήρα '\0' στο τέλος.
  2. Μέσω της κλάσης 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.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;
}

Οι βασικές μέθοδοι της κλάσης string είναι οι εξής:

Κατασκευαστές

string();
default constructor
string (const string& str);
copy constructor
string (const string& str, size_t pos, size_t len = npos);
substring constructor
string (const char* s);
from c-string constructor
string (const char* s, size_t n);
from c-string sequence
string (size_t n, char c);
fill with 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;
Επιστρέφει το μέγεθος του string
size_t length() const;
Μέθοδος ανάλογη της μεθόδου size
size_t capacity() const;
Χωρητικότητα του αλφαριθμητικού (σε bytes)
void resize (size_t n); και 
 void resize (size_t n, char c);
Επεκτείνεται το αλφαριθμητικό ώστε να έχει νέο μέγεθος n.
void reserve (size_t n = 0);
Μεταβάλλει τη χωρητικότητα του αλφαριθμητικού.
void clear();
Διαγράφει τα περιεχόμενα του αλφαριθμητικού
bool empty() const;
Επιστρέφει true εάν το αλφαριθμητικό είναι άδειο.

Πρόσβαση σε χαρακτήρες του αλφαριθμητικού

char& operator[] (size_t pos);
const char& operator[] (size_t pos) const;
Επιστρέφει μία αναφορά στη θέση pos του string.
char& at (size_t pos);
const char& at (size_t pos) const;
Επιστρέφει μία αναφορά στη θέση pos του string. Πετάει out_of_range exception εάν δοθεί τιμή εκτός των ορίων του πίνακα.
char& back();
const char& back() const;
Επιστρέφει μία αναφορά στον τελευταίο χαρακτήρα του string.
char& front();
const char& front() const;
Επιστρέφει μία αναφορά στον πρώτο χαρακτήρα του string.

Στις όλες παραπάνω περιπτώσεις εάν το string είναι const επιστρατεύεται η const έκδοση της συνάρτησης.

Διάτρεξη

iterator begin();
const_iterator begin() const;
Επιστρέφει έναν iterator που δείχνει στον πρώτο χαρακτήρα του string.
iterator end();
const_iterator end() const;
Επιστρέφει έναν iterator που δείχνει μετά τον τελευταίο χαρακτήρα του string.
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
Επιστρέφει έναν reverse iterator που δείχνει στον τελευταίο χαρακτήρα του string.
reverse_iterator rend();
const_reverse_iterator rend() const;
Επιστρέφει έναν reverse iterator που δείχνει πριν από τον πρώτο χαρακτήρα του string.

Παράδειγμα χρήσης iterator

#include <iostream>
#include <string>
using namespace std;
 
int main (){
  string str = "Hello World!";
  for( string::iterator it=str.begin(); it!=str.end(); ++it)
    cout << *it;
  cout << endl;
}

Παράδειγμα χρήσης reverse_iterator

#include <iostream>
#include <string>
using namespace std;
 
int main (){
  string str = "Hello World!";
  for (string::reverse_iterator rit=str.rbegin(); rit!=str.rend(); ++rit)
    cout << *rit;
  cout << endl;
}

Μεταβολή του αλφαριθμητικού

string& operator+= (const string& str);
string& operator+= (const char* s);
string& operator+= (char c);
Επεκτείνει το αλφαριθμητικό προσθέτοντας τους επιπλέον χαρακτήρες του ορίσματος στο τέλος του. Επιστρέφει μία αναφορά στο τρέχον αντικείμενο.
 
 
 
 
 
 
 
 

Σύγκριση, αναζήτηση, εξαγωγή υπο-αλφαριθμητικών

 
 
 
 
 
 
 
 
 
cpp/strings.1494221162.txt.gz · Last modified: 2017/05/08 04:26 (external edit)