NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 10 - Textové řetězce v jazyce C++

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na Miroslav Jaroš
Patrik Valkovič:18.11.2018 19:18

Při porovnávání unsigned int a int se int automaticky přetypuje na unsigned. -1 je pro unsigned roven nejvyšší hodně, jakou může unsigned int nabývat. text.length() vrací unsigned, proto program funguje. Je pravda, že správně by měla být proměnná pozicia být typu unsigned int. Warning ve VS je správný.

Odpovědět
18.11.2018 19:18
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Miroslav Jaroš:18.11.2018 19:32

V clanku je teda chyba: "Pokud řetězec znak neobsahuje, vrátí metoda hodnotu větší, než je poslední index řetězce.".

 
Odpovědět
18.11.2018 19:32
Avatar
Odpovídá na Miroslav Jaroš
Patrik Valkovič:18.11.2018 20:11

Proč? Hodnota nikde nadefinovaná neni, pouze je zaručeno že je větší než je délka řetězce.

Odpovědět
18.11.2018 20:11
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Miroslav Jaroš:18.11.2018 20:41

Mne to vracia -1, cize je mensia. Funguje to len vdaka pretypovaniu co spravilo koli tomu signed/unsigned mismatch , ale ak by som to chcel pouzit inak(napr. ak by som sa chcel zbavit toho varovania vo VS), tak ta info nie je spravna. Ak by som to porovnal s unsigned typom tak nie je zarucene, ze je vecsia.
Alebo som nieco nepochopil? Snazim sa to len co najlepsie pochopit a teraz som sa v tom este viac zamotal ked nesuhlasis s mojim tvrdenim, ze je tam chyba. :)
Podla clanku ta metoda vrati hodnotu vacsiu ako je posledny index a nie, ze v tomto konkretnom pripade co je spomenuty sa v tej podmienke zmeni na vacsiu vdaka pretypovaniu koli nepsravnemu porovnaniu rozdielnych typov.
Nechcem teraz silou mocou trvat na svojom a chapem, ze ja som ten co toho vie v tomto pripade menej, len sa to ucim, ale ozaj sa snazim pochopit co najviac a v tomto pripade mi to vobec nesedi. -1 predsa nemoze byt vacsie ako posledny index v retazci.

 
Odpovědět
18.11.2018 20:41
Avatar
Odpovídá na Miroslav Jaroš
Patrik Valkovič:18.11.2018 21:13

Metoda find i size vrací size_t, tedy unsigned int. Rovná se to -1, protože jsi výsledek uložil do hodnoty int, ne unsigned int. Pokus ji uložíš to unsigned int (jak by to mělo být správně), potom bude hodnota větší.

Editováno 18.11.2018 21:13
Odpovědět
+1
18.11.2018 21:13
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Patrik Valkovič
Miroslav Jaroš:18.11.2018 21:18

Vdaka, uz mi je to jasne :) ... Mozno by sa to malo doplnit do clanku. Sorac ak som moc otravoval, ale toto je moj 3 pokus naucit sa programovat a strasne chcem aby bol aj posledny a uspesny :) ... Do vsetkeho chcem vrtat kym to nepochopim na 100% :)

 
Odpovědět
18.11.2018 21:18
Avatar
Aleš Holan
Člen
Avatar
Aleš Holan:5.7.2022 20:09

Nejsou uvedeny příklady u rfind(),find_fir­st_of(),find_las­t_of(),substr(): vrátí podřetězec, určený počátkem a délkou

Třeba u posledního popis neprogramátorovi vůbec nic neřekne.

 
Odpovědět
5.7.2022 20:09
Avatar
Radim Horáček:6.4.2023 12:05

Mám dotaz. K čemu je metoda/funkce clear() , když stačí do proměnné přiřadit "nic" ( promenna="";)?

 
Odpovědět
6.4.2023 12:05
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Radim Horáček
DarkCoder:6.4.2023 12:34

Metoda clear třídy string slouží k vymazání obsahu řetězce, takže výsledkem bude prázdný řetězec. Použití metody clear může být užitečné, pokud chceš ponechat řetězec jako objekt a jenom vymazat jeho obsah, aby byl znovu použitelný.

Přiřazení prázdného řetězce přímo instanci třídy string může být také použito k vymazání obsahu řetězce. Rozdíl mezi použitím metody clear a přiřazením prázdného řetězce spočívá v tom, že metoda clear vymaže obsah řetězce, ale ponechá alokovanou paměť pro řetězec, zatímco při přiřazení prázdného řetězce se uvolní paměť, kterou původní řetězec zabíral.

Odpovědět
6.4.2023 12:34
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 19.