string handling
Főnév
string handling (tsz. string handlings)
String kezelés C++ nyelven
Bevezetés
A stringek (karakterláncok) a szöveges adatok tárolására és kezelésére szolgálnak C++-ban. Két fő módja van a stringek kezelésének:
- C-stílusú karaktertömbök (nullával lezárt karakterláncok)
std::stringosztály (a modern C++ ajánlott megoldása)
Ebben a cikkben mindkét módszert bemutatjuk, majd a stringek kezeléséhez szükséges legfontosabb függvényeket és műveleteket.
1. C-stílusú karakterláncok (char tömb)
A C-ben és a régebbi C++ verziókban a karakterláncokat karaktertömbökben tárolták. A karakterlánc végét egy \0 (null karakter) jelöli.
1.1. C-stílusú string deklarációja
#include <iostream>
using namespace std;
int main() {
char nev[] = "Hello";
cout << "Nev: " << nev << endl;
return 0;
}
📌 Fontos: A nev tömb tartalmazza a "Hello\0" karakterláncot, ahol a \0 a végét jelzi.
1.2. C-stílusú string beolvasása
A cin nem tud szóközt tartalmazó szöveget beolvasni, ezért cin.getline() vagy fgets() függvényt kell használni.
#include <iostream>
using namespace std;
int main() {
char nev[50];
cout << "Add meg a neved: ";
cin.getline(nev, 50);
cout << "Hello, " << nev << "!" << endl;
return 0;
}
2. Modern string kezelés (std::string)
A C++ Standard Library biztosítja az std::string osztályt, amely dinamikusan kezeli a karakterláncokat, így sokkal kényelmesebb, mint a char tömbök.
2.1. std::string deklarálása és használata
#include <iostream>
#include <string>
using namespace std;
int main() {
string nev = "Péter";
cout << "Nev: " << nev << endl;
return 0;
}
✅ Előnyök az std::string használatával: - Nem kell előre meghatározni a méretet - Támogatja a könnyű műveleteket (+, +=, stb.) - Számos beépített függvény elérhető
3. String műveletek (std::string függvények)
3.1. String beolvasása és kiíratása
#include <iostream>
#include <string>
using namespace std;
int main() {
string nev;
cout << "Add meg a neved: ";
getline(cin, nev); // Beolvas egy teljes sort
cout << "Üdv, " << nev << "!" << endl;
return 0;
}
📌 getline(cin, nev): Beolvas egy teljes sort, szóközökkel együtt.
3.2. String összefűzés (+ és +=)
#include <iostream>
#include <string>
using namespace std;
int main() {
string vezeteknev = "Kovács";
string keresztnev = "Péter";
string teljesNev = vezeteknev + " " + keresztnev;
cout << "Teljes nev: " << teljesNev << endl;
return 0;
}
📌 + operátorral stringeket fűzhetünk össze.
3.3. String hossza (length() vagy size())
string szoveg = "Hello";
cout << "A string hossza: " << szoveg.length() << endl;
📌 Megjegyzés: length() és size() ugyanazt az eredményt adja.
3.4. Karakter elérése ([] és at())
string szoveg = "Hello";
cout << "Elso karakter: " << szoveg[0] << endl;
cout << "Masodik karakter: " << szoveg.at(1) << endl;
📌 [] gyorsabb, de nem ellenőrzi a határokat.
📌 at() biztonságosabb, mert ellenőrzi az érvényes indexet.
3.5. String összehasonlítása (compare())
string a = "apple";
string b = "banana";
if (a.compare(b) < 0) {
cout << "Az 'apple' kisebb, mint 'banana'." << endl;
}
📌 compare(): Visszaad: - 0 ha egyenlő - Negatív érték ha a kisebb, mint b - Pozitív érték ha a nagyobb, mint b
3.6. Keresés stringben (find())
string szoveg = "Hello, világ!";
size_t pozicio = szoveg.find("világ");
if (pozicio != string::npos) {
cout << "'világ' megtalálható a " << pozicio << ". pozíción." << endl;
} else {
cout << "'világ' nem található meg." << endl;
}
📌 find() visszaadja a keresett kifejezés kezdőindexét, vagy string::npos ha nincs találat.
3.7. Részstring kivágása (substr())
string szoveg = "Hello, világ!";
string resz = szoveg.substr(7, 5); // "világ"
cout << "Kivágott rész: " << resz << endl;
📌 substr(index, hossz): Kivág egy adott részt a stringből.
3.8. String módosítása (insert(), erase(), replace())
string szoveg = "Hello, világ!";
szoveg.insert(6, "kedves "); // "Hello, kedves világ!"
szoveg.erase(6, 7); // "Hello, világ!"
szoveg.replace(7, 5, "C++"); // "Hello, C++!"
cout << szoveg << endl;
📌 insert(): Beszúr egy részt adott helyre.
📌 erase(): Töröl adott hosszúságú részt.
📌 replace(): Lecserél adott részt másik szövegre.
3.9. String átalakítása kis- és nagybetűssé
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main() {
string szoveg = "Hello, World!";
for (char &c : szoveg) {
c = toupper(c); // Nagybetűsítés
}
cout << "Nagybetűs: " << szoveg << endl;
for (char &c : szoveg) {
c = tolower(c); // Kisbetűsítés
}
cout << "Kisbetűs: " << szoveg << endl;
return 0;
}
📌 toupper() és tolower() karakterenként módosítja a stringet.
Összegzés
- C-stílusú stringek (
chartömb) – Régi módszer, kevésbé ajánlott. std::stringosztály – Dinamikus és könnyen kezelhető.- Legfontosabb műveletek:
- Beolvasás (
getline()) - Összefűzés (
+,+=) - Hossz (
length()) - Keresés (
find()) - Módosítás (
insert(),erase(),replace()) - Összehasonlítás (
compare())
- Beolvasás (
A modern C++ programozásban az std::string a legjobb választás! 🚀
- string handling - Szótár.net (en-hu)
- string handling - Sztaki (en-hu)
- string handling - Merriam–Webster
- string handling - Cambridge
- string handling - WordNet
- string handling - Яндекс (en-ru)
- string handling - Google (en-hu)
- string handling - Wikidata
- string handling - Wikipédia (angol)