Cin a poté nefungující getline(cin,string) – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Cin a poté nefungující getline(cin,string) – C / C++ – Fórum – Programujte.comCin a poté nefungující getline(cin,string) – C / C++ – Fórum – Programujte.com

 

Jana24
~ Anonymní uživatel
6 příspěvků
30. 12. 2011   #1
-
0
-

Ahoj,

v prvním kroku jsem si načetla číslo, pomocí cin, protože kontroluju pomocí cin.fail(), že jde skutečně o číslo jinak se musí číslo načíst znovu. V druhém kroku chci načíst string pomocí funkce getline(cin,string). Jenže getline se tváří, že v sobě již něco má a tak se přeskočí a celý program se ukončí... Nevíte v čem to je a jak to opravit?

while(1)
    {
        int hodnota;

        cin >> hodnota;
        if(cin.fail()  )
        {
            cin.clear();
            string pom;
            getline(cin, pom);
            cout<<"Zadal jsi spatny vstup. Zkus to znova: ";
        }
        else
        {
           break;
        }
    }

        string zk;
        cout<<"pis: ";
        cin.clear();
        zk.clear();
        getline(cin,zk);
        cout<<zk<<endl;

Nahlásit jako SPAM
IP: 85.71.215.–
ondra.holub+1
Stálý člen
30. 12. 2011   #2
-
0
-

Načtením čísla dojde k tomu, že se načtou jenom znaky, které patří do toho čísla. Takže v tomto případě je nejspíš nejjednodušší po načtení čísla přeskočit zbytek řádku s číslem - tedy všechno až po znak \n:

// Na zacatek si pridej #include <limits>

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
Nahlásit jako SPAM
IP: 212.96.189.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

Podobná vlákna

Cin.getline — založil Avidius

Cin.getline — založil RybaRak-WM

Cin.getline — založil tupec

Cin.getline — založil Hlavinka

Cin.get() cin.line() — založil H3ll

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý