Portál AbcLinuxu, 12. května 2025 10:37

Dotaz: C++ cteni z cin a CTRL+D

3.3.2011 17:13 MArty
C++ cteni z cin a CTRL+D
Přečteno: 444×
Odpovědět | Admin
Dobry den, chtel bych se zeptat kdyz nacitam v C++ znaky z stdin zpusobem uvedenym nize, proc musim zmacknout CTRL+D dvakrat, aby se cteni ukoncilo? Nemel by stacil pouze jeden stisk teto zkratky generujici znak EOF?
    
    while (cin)
    {
        c = cin.get();
        if (c != EOF)
            zpracuj znak;
    }

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.3.2011 13:12 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: C++ cteni z cin a CTRL+D
Odpovědět | | Sbalit | Link | Blokovat | Admin

To není záležitost C++, ale toho, jak funguje kombinace kláves Ctrl-D. Při obvyklém nastavení tato kombinace způsobí flushnutí bufferu, pokud v něm něco je. Pokud je prázdný, funguje jako EOF. Buffer je prázdný buď na začátku řádku (při defaultním nastavení se bufferuje po řádcích) nebo bezprostředně po flushnutí (tj. stisknete-li Ctrl-D dvakrát po sobě).

Ve výsledku to znamená, že jste-li na začátku řádku, stačí Ctrl-D stisknout jednou, pokud ne, je potřeba ho stisknout dvakrát (chcete-li ukončit vstup).

4.3.2011 13:13 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: C++ cteni z cin a CTRL+D
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ještě jsem zapomněl na jednu důležitou věc: EOF není znak.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.