Ugrás a tartalomhoz

std::string::empty

A Wikiszótárból, a nyitott szótárból


Főnév

std::string::empty (tsz. std::string::empties)

  1. (informatika) A std::string::empty() egy C++ szabványos könyvtárában található tagfüggvény, amely arra szolgál, hogy ellenőrizze, egy std::string objektum üres-e, vagyis nem tartalmaz karaktereket.



1. Szintaxis

bool empty() const noexcept;
  • Visszatérési érték: true, ha a string üres (hossza 0), különben false.
  • const tagfüggvény: Nem módosítja az objektumot.
  • noexcept: Nem dob kivételeket.



2. Egyszerű példa

#include <iostream>
#include <string>

int main() {
    std::string s1 = "";
    std::string s2 = "Hello";

    std::cout << "s1 üres? " << (s1.empty() ? "Igen" : "Nem") << std::endl;
    std::cout << "s2 üres? " << (s2.empty() ? "Igen" : "Nem") << std::endl;

    return 0;
}

Kimenet:

s1 üres? Igen
s2 üres? Nem

Ebben a példában az s1 üres, így empty() true értéket ad vissza, míg az s2 nem üres, így false.



3. Kapcsolata length()-tel

A empty() egyenértékű azzal, ha ellenőrizzük, hogy length() == 0:

if (s.empty()) { 
    std::cout << "A string üres" << std::endl;
}

ugyanazt csinálja, mint:

if (s.length() == 0) { 
    std::cout << "A string üres" << std::endl;
}

De a empty() használata jobban olvasható és hatékonyabb lehet optimalizáció szempontjából.



4. Használata if feltételekben

A empty() gyakran szerepel if szerkezetekben egy karakterlánc tartalmának ellenőrzésére:

std::string felhasznalo_input;
std::cout << "Írjon be valamit: ";
std::getline(std::cin, felhasznalo_input);

if (felhasznalo_input.empty()) {
    std::cout << "Nem írt be semmit!" << std::endl;
} else {
    std::cout << "A beírt szöveg: " << felhasznalo_input << std::endl;
}

Ha a felhasználó csak egy ENTER-t nyom, akkor a program felismeri, hogy a string üres.



5. Teljesítmény és időkomplexitás

A empty() O(1) időben fut, mivel nem kell végignéznie a string tartalmát – a std::string belsőleg tárolja a méretet.

Ezért hatékonyabb lehet, mint size() == 0 vagy length() == 0, mivel egyes implementációkban a size() lehet nem inline függvény.



6. Példa ciklus megszakítására

A empty() gyakran hasznos ciklusokban, amikor egy bemenet beolvasása után ellenőrizzük, hogy üres-e:

std::string s;
while (true) {
    std::cout << "Adjon meg egy szöveget (üres input a kilépéshez): ";
    std::getline(std::cin, s);
    
    if (s.empty()) {
        std::cout << "Kilépés..." << std::endl;
        break;
    }

    std::cout << "Beírt szöveg: " << s << std::endl;
}

Ha a felhasználó üres sort ad meg, a program leáll.



7. std::wstring::empty() – Széles karakterláncok esetén

A empty() ugyanígy működik std::wstring esetén is:

std::wstring ws = L"";
if (ws.empty()) {
    std::wcout << L"A széles string üres." << std::endl;
}

8. Összegzés

  • Mit csinál? Ellenőrzi, hogy a string üres-e.
  • Mikor használjuk? Ha gyorsan és hatékonyan akarunk ellenőrizni egy stringet, hogy tartalmaz-e karaktereket.
  • Alternatíva: s.size() == 0 vagy s.length() == 0, de a empty() olvashatóbb és hatékonyabb.
  • Időkomplexitás: O(1), mert a std::string tárolja a hosszát.