string handling

Üdvözlöm, Ön a string handling szó jelentését keresi. A DICTIOUS-ban nem csak a string handling szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a string handling szót egyes és többes számban mondani. Minden, amit a string handling szóról tudni kell, itt található. A string handling szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. Astring handling és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

Főnév

string handling (tsz. string handlings)

  1. (informatika)

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:

  1. C-stílusú karaktertömbök (nullával lezárt karakterláncok)
  2. std::string osztá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;
    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 << 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 (char tömb) – Régi módszer, kevésbé ajánlott.
  • std::string osztá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())

A modern C++ programozásban az std::string a legjobb választás! 🚀