Jste zde

Ještě jednou a lépe: kontrola na prázdný std::string v C++

Není pochyb o tom, že existuje spousta cest, jak zjistit, zda je řetězec prázdný. Kterou z nich ale zvolit a proč? To se dozvíte v dnešním příspěvku.

Původní kód

S následujícím kódem na otestování toho, zda je řetězec prázdný, se setkávám pravidelně:

std::string str;
// ...
if (str == "") {
    // ...
}

či někdy dokonce

if (str.size() == 0) {
    // ...
}

Proč takto raději ne?

První kód v podmínce výše říká: "je řetězec uložený v str roven prázdnému řetězci?". Druhý říká: "je délka řetězce str rovna nule?". Ani jeden z nich neříká přímo to, co chceme, ale implementuje způsoby, jak to zjistit.

Jak to udělat lépe?

Proč to řešit oklikou? Napišme přímo to, co chceme, aby se otestovalo:

if (str.empty()) {
    // ...
}

Kód se pak čte takto: "je řetězec uložený v str prázdný?". Toto je mnohem deklarativnější a z mého pohledu čitelnější přístup, než ty dva uvedené na začátku příspěvku.

Přidat komentář