Az alábbi C++ problémám van. Hogyan lehet a legoptimálisabban megoldani?
Egy file-ból szeretnék adatokat beolvasni. Amiben lehetnek kommentek ill. komment sorok. Elég egyszerű probléma, de mégsem látom sehol, hogy optimálisan csinálnák. Nagy file-okról van szó, ezért ne írjátok légyszi, hogy ne törődjek az optimalizálással!
Ha a getline-al beolvasom a sort, majd ellenőrzöm mondjuk a kezdő karaktert, hogy komment jel-e, és utána olvasom az adatokat mondjuk sstream-mel, akkor lényegében kétszer olvastam be a sort!
Ha tudnám, hogy nem komment sor, akkor olvashatnám be egyből az adatokat >>, de sajnos ezt előre nem tudom.
Megoldható valahogy, hogy a sor kétszeri feldolgozása nélkül leprogramozzam?
Hiába beszélek, úgy látom nem érted a problémámat. Konkrétumokról tudnánk csak beszélni, de te C-s vagy, én meg C++-ról beszélek. Az csak azt tudom megmondani, hogy mik a szokásos megoldások az általam ismert eszköztárral, és azokkal mi a baj.
1) Szokták azt, hogy beolvassák soronként a filet, pl getline-al, pl. egy stringbe. Majd ellenőrzik pl. az első karakter alapján, hogy komment-e. Ha nem, akkor strinstream-be rakják, és beolvassák az adatokat sorba, vagy stringként tördelik, és megfelelő típusra alakítják. Ez nem jó, mert a getline-al már egyszer végigmentünk a soron a sorvége jelig, majd újra végigmegyünk a stringstream-ből való adatkiolvasásnál, vagy a string feldolgozásánál.
2) Megnézhetjük get-el csak az első karaktert, anélkül hogy sorvége jelig mennénk, de ha az a karakter már az adat része, akkor hogyan olvassuk ki az adatot? Nyilván meg lehet csinálni, csak nagyon barkács megoldás, és én nem ismerek rá megfelelő standard megoldásokat. Ha nem ismered a C++-t, akkor valószínű te sem tudod, hogy van-e vagy sem.
Nem gyaláztalak.
És nem értem mit ismételgeted magad. Értem, amit írsz, csak azt nem hogy ennek mi köze a kérdéshez. És ha nem fejted ki bővebben, csak mindig ugyanazt a sor írod, akkor nem is fogom soha megérteni.
Nem kétszer olvasom be, hanem kétszer megyek végig a karaktersorozaton. Az mindegy hogy beolvasás, átadás, vagy feldolgozás közben. Algoritmikusan viszont elég lenne egyszer végigmenni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!