InformaticăliceuClasa 9usor
Șiruri de Caractere în C++ - String și Operații
Tot ce trebuie să știi despre std::string: declarare, operații, metode și algoritmi pe șiruri.
3 luni în urmă
0 vizualizări
20 minute
Șiruri de Caractere în C++
C-String vs std::string
1// C-String (char array) 2char cstr[100] = "Hello"; 3 4// std::string (recomandat) 5#include <string> 6string str = "Hello";
Operații de Bază
1#include <iostream> 2#include <string> 3using namespace std; 4 5int main() { 6 string s1 = "Hello"; 7 string s2 = "World"; 8 9 // Concatenare 10 string s3 = s1 + " " + s2; // "Hello World" 11 s1 += "!"; // "Hello!" 12 13 // Lungime 14 cout << s1.length() << endl; // sau size() 15 16 // Acces caractere 17 cout << s1[0] << endl; // 'H' 18 cout << s1.at(1) << endl; // 'e' (cu verificare bounds) 19 20 // Comparare 21 if (s1 == s2) cout << "Egale" << endl; 22 if (s1 < s2) cout << "s1 < s2 lexicografic" << endl; 23 24 // Subșir 25 string sub = s1.substr(0, 3); // "Hel" (de la poziția 0, 3 caractere) 26 27 return 0; 28}
Căutare și Înlocuire
1string s = "Hello World World"; 2 3// Căutare 4size_t pos = s.find("World"); // 6 5pos = s.find("World", 7); // 12 (căutare de la poziția 7) 6pos = s.rfind("World"); // 12 (căutare de la final) 7 8if (s.find("xyz") == string::npos) 9 cout << "Nu a fost găsit" << endl; 10 11// Înlocuire 12s.replace(6, 5, "C++"); // "Hello C++ World" 13 14// Ștergere 15s.erase(5, 4); // Șterge 4 caractere de la poziția 5 16 17// Inserare 18s.insert(5, " there"); // Inserează la poziția 5
Conversii
1// String -> Număr 2string numStr = "12345"; 3int num = stoi(numStr); // 12345 4long l = stol(numStr); 5double d = stod("3.14"); 6 7// Număr -> String 8string s = to_string(42); // "42" 9string s2 = to_string(3.14); // "3.140000"
Algoritmi Utili
1#include <algorithm> 2 3string s = "Hello World"; 4 5// Sortare 6sort(s.begin(), s.end()); // " HWdellloor" 7 8// Inversare 9reverse(s.begin(), s.end()); 10 11// Transformare în majuscule/minuscule 12transform(s.begin(), s.end(), s.begin(), ::toupper); 13transform(s.begin(), s.end(), s.begin(), ::tolower); 14 15// Numărare caractere 16int count_l = count(s.begin(), s.end(), 'l');
Verificare Palindrom
1bool estePalindrom(const string& s) { 2 int n = s.length(); 3 for (int i = 0; i < n / 2; i++) { 4 if (s[i] != s[n - 1 - i]) 5 return false; 6 } 7 return true; 8} 9 10// Sau cu reverse 11bool estePalindrom2(const string& s) { 12 string rev = s; 13 reverse(rev.begin(), rev.end()); 14 return s == rev; 15}
Tokenizare (Split)
1#include <sstream> 2 3vector<string> split(const string& s, char delim) { 4 vector<string> tokens; 5 stringstream ss(s); 6 string token; 7 8 while (getline(ss, token, delim)) { 9 tokens.push_back(token); 10 } 11 12 return tokens; 13}
Tutorialul te-a ajutat?
Dacă ai nevoie de ajutor personalizat, găsește un profesor calificat pentru meditații
