Nevie mi tu niekto poradit ci sa v c++ da citat z daneho riadku v .txt subore? Nemyslim tak ze by som musel nepotrebne riadky tiez citat ale priamo skocit na ten kt potrebujem, pretoze sa toto vyhladavanie bude casto opakovat...
Fórum › C / C++
Citanie textovych suborov
NE! Nový řádek je jen znak jako třeba "A"..
V zásadě jde o to, že nevíš kolik znaků má který řádek. Pokud by řádky měly danou přesně velikost, pak by v tom nebyl žádný problém a ani tvrzení od Zelenáče, mimochodem poněkud nepřesné, nezabránilo.
Dále by to šlo optimalizovat tak, že by jsi si zprvu ten soubor prošel řádek po řádku a ukládal si např. do vektoru, indexy nových řádků. Při dalším hledání by stačilo, pouze nahlídnout do pole, zjistit offset a přemístit ukazatel souboru na ono místo.
To Jura:
Nemyslim tak ze by som musel nepotrebne riadky tiez citat ale priamo skocit na ten kt potrebujem
Proc myslis, ze je me tvrzeni nepresne? AFAIK v ASCII je novy radek 13, 10 (pripadne oboji) - je to znak stejne jako tabulator, mezernik nebo kterekoli pismeno..
To dudo1904: Mozna by ti lepe poslouzila databaze ?!
Nějak mi není jasné, co má znak nového řádku společného s tím, že se nedá přeskočit na příslušný řádek? To s tím vůbec nesouvisí, jediný důvod proč si to nemůžes "dovolit" je ten, který jsem již zmínil - pokud nemáš předem určený počet znaků v řádku, tak si nemůžeš být jistý, kde začíná další řádek.
Textový soubor teoreticky žádné řádky nemá, takže není na co skákat! Samozřejmě můžeš v souboru odpočítat X znaku \n a vše, co leží mezi X+1 a X+2 načíst - tazatelovi se ovšem tato metoda nelíbila a proto se ptal, zda to nejde nějak "přímo"..
Oproti tomu, pokud máš jasně definovanou velikost "řádku", pak jsou celé řádky vlastně naprosto zbytečné a bohatě stačí načítat "bloky" o dané velikosti :-P
Cez DB to nepojde lebo to ma citat koordinaty vertexov v .obj suboroch(maju celkom jednoduchy zapis) takze asi jedina cesta je spraviit pole a ukladat po jednom a potom vyberat vertexy odtial a spajat? P.S.:OpenGL:-? Len by ma zaujimalo ake bude to pole velke.... desattisice poloziek
dudo1904: Nacitat si data kompletne do nejakeho buffera je asi najlebsi sposob. Totizto pamat RAM je v tomto nepochybne rychlejsia a nemoze sa to porovnavat s prstupom k disku, cize skakanie v subore nieje vhodny napad. Skusal som to raz a bolo to pretty slowly. Co sa tyka desatisice poloziek, taktiez nemaj strach. Zober si ze mas cca 30 000 vertexov. kazdy vertex sa sklada z 3 suradnic tj 30 000 * 3 = 90 000. Zoberme ze ide o GLFloat ktory je 32 bitovy cize 90 000 * 32 = 2 880 000 bitov. Bajt ma 8 bitov cize 2 880 000/8 = 360 000 cize 360 000 / 1024 = 351.5625 Kb co je pri dnesnej velkosti RAMiek v pohode.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Aké kódovanie používa čítanie súborov Pascal — založil Bellwar
Porovnání textových souborů po řádcích — založil avalagne
Spojení textových řetězců v Excel — založil trawa
Seznam textových hodnot s náhodným výběrem — založil Xplosiv7
Moderátoři diskuze