String vypisuje 2x – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

String vypisuje 2x – C / C++ – Fórum – Programujte.comString vypisuje 2x – C / C++ – Fórum – Programujte.com

 

borekore
~ Anonymní uživatel
2 příspěvky
16. 12. 2022   #1
-
0
-

Dobry den, prosim proc vypisuje ten string 2x?

ifstream myfile;
myfile.open("json.txt");
string myline;

while(myfile)
{getline(myfile,myline);
cout << myline <<
;
}

system("pause");

Dekuji
 

Nahlásit jako SPAM
IP: 2a02:8308:319:d300:c9cb:69ee:6f68:44b7...–
borekore
~ Anonymní uživatel
2 příspěvky
16. 12. 2022   #2
-
0
-

   

while(myfile)
        {getline(myfile,myline);
        cout << myline << '\n';
        }

system("pause");
Nahlásit jako SPAM
IP: 2a02:8308:319:d300:c9cb:69ee:6f68:44b7...–
gna
~ Anonymní uživatel
1847 příspěvků
17. 12. 2022   #3
-
0
-

Protože příznak konce souboru (nebo chyby) se nastaví až když se pokusíš číst za koncem a protože getline tu výstupní proměnnou nijak nemění když nic nenačte.

  • Čili načteš poslední řádek a vypíšeš ho.
  • Soubor je vpořádku, tak čteš dál. Fakticky jsi na jeho konci, tak teď to selže a do myline se nic nevloží a je tam předchozí hodnota, kterou znova vypíšeš.
  • Až teď detekuješ konec souboru a cyklus končí.

Můžeš dát přímo getline jako podmínku toho cyklu.

while (getline(myfile, myline))
{ 
    cout << myline << '\n';
}
Nahlásit jako SPAM
IP: 213.211.51.–
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, 3 hosté

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ý