Kezdőoldal » Számítástechnika » Programozás » Az alábbi C++ problémám van....

Az alábbi C++ problémám van. Hogyan lehet a legoptimálisabban megoldani?

Figyelt kérdés

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?



2012. aug. 14. 17:05
1 2
 1/16 anonim ***** válasza:
Hát akkor ne dolgozd fel kétszer. Én a getline utáni komment ellenőrzéstől függően vagy eldobnám a sort, vagy átraknám egy pufferbe, amiben a beolvasott adatokat tartom
2012. aug. 14. 17:19
Hasznos számodra ez a válasz?
 2/16 A kérdező kommentje:
nem értem, hogy mit mondasz. azt mondod, hogy ne dolgozzam fel kétszer, hanem? a puffer az micsoda, és mit csinálok vele? Az adatokat egyébként egy vektorba kell beraknom a végén, de ez szerintem mindegy, ez nem a problémához tartozik.
2012. aug. 14. 18:57
 3/16 A kérdező kommentje:
Valami olyasmi lenne a megoldás, hogy ki lehessen olvasni egy karaktert úgy, hogy utána azt vissza lehessen tenni a folyamba újbóli kiolvasásra. Nem tudom ilyen létezik-e, vagy lehet-e szimulálni?
2012. aug. 14. 18:58
 4/16 anonim ***** válasza:
A puffer az puffer. Én egy láncolt listába pakolnám be amit beolvasok, de én c programozó vagyok :) Továbbra se értem, mit nem értesz, ha soronként olvasod be, akkor az első karakter vizsgálata után vagy eldobod az egész sort, vagy mehet feldolgozásra. Miért kéne újra beolvasni?
2012. aug. 15. 00:20
Hasznos számodra ez a válasz?
 5/16 A kérdező kommentje:
De mivel olvasod be? get() karakterenként? Akkor viszont ott dolgozod fel kétszer, hogy a karakterláncot átalakítod számmá. És mivel, és hogyan?
2012. aug. 15. 12:00
 6/16 anonim ***** válasza:
A getline beolvassa a sort, nem? Ott van a memóriában
2012. aug. 15. 12:01
Hasznos számodra ez a válasz?
 7/16 A kérdező kommentje:

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.

2012. aug. 15. 16:46
 8/16 anonim ***** válasza:
Mintha el se olvasnad, amit irok. Most meg engem gyalázol, pedig ilyen felkészûltsêggel kár beléd a c++. Getline. BEOLVASOL EGY EGESZ KVA SORT A MEMORIABA. MIT NEM ERTESSZ RAJTA ES MINEK AKAROD MEGEGYSZER BEOLVASNI?
2012. aug. 15. 16:52
Hasznos számodra ez a válasz?
 9/16 A kérdező kommentje:

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.

2012. aug. 15. 20:18
 10/16 iostream ***** válasza:
Én sem értem a problémát. Egyedül az első karaktert vizsálod meg többször. Ez nagyon nem pazarlás.
2012. aug. 15. 22:53
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!