LA CLASSE STRING Videmus nunc per speculum et in aenigmate San Paolo, 1a lettera ai Corinzi
Motivazioni stringhe C -> errori errori tipici array mancanza '\0' Soluzione: costrutto specifico del C++
Definizione e inizializzazione #include <string> using namespace std; char vecchia[]=”vecchio approccio”; string s1,s2; string s3=”Lezione di oggi”; s1=”Altra lezione”; s2=vecchia; s2[0]='v';
Input e output string s; cin >> s; // anche da fstream cout << s; getline(cin,s); // !!!
Metodi e operatori le funzioni di stringa del C non si possono usare metodi specifici estensioni di operatori
Metodi simili if(s1.find(“A”)!==string::npos)// strchr() string s1,s2; if(s1==s2) ... // strcmp() anche > < != ... if(s1.empty())... // s1==”” if(s2==”corso”)... // strcmp() s2 = ”Mario”; // strcpy() s1=s2+” ciao”; // strcat(), strcpy() cout << s1.length(); // o s1.size() strlen() if(s1.find(“A”)!==string::npos)// strchr() cout << s2.find(“ati”); // ~ strchr() int i = s1.rfind(“a”); // strrchr()
Metodi specifici Lista non esaustiva string s1,s2; s1=”Fondamenti di Informatica A”; s2=s1.substr(14,11); s1.replace(14,13,”Elettronica B”); s1.erase(0,14);
Conversioni string s; char a[]=”XYZ”; s=a; // semplice char *p=s.c_str(); strcpy(a,s.c_str()); char c=s[i];
string stream permette di gestire stringhe come I/O sia input che output pratico per conversioni permette l'utilizzo della maggior parte dei metodi di I/O
Conversioni #include<sstream> ostringstream ss_out; istringsteam ss_in; int i = 22; ss_in << i; // ss_in = stringa “22” string s = ss_in.str(); // conversione <- ss_out.str(s); // conversione -> ss_out >> i; // i=22