Nacitanie dat zo suboru c++ – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Nacitanie dat zo suboru c++ – C / C++ – Fórum – Programujte.comNacitanie dat zo suboru c++ – C / C++ – Fórum – Programujte.com

 

nord0
Návštěvník
6. 5. 2016   #1
-
0
-

zdravim. Mam problem pri nacitani z txt. Mam velmi vela dat (mena a cisla) . Viete mi poradit nejaky rychly sposom nacitania ? Lebo mne to trva minutu a par sekund ked spustam program a to je dost :) v programe chcem s datami pracovat tak tam potrebujem vsetky. Pripadne dat to do ineho suboru ? Nie txt? Dakujem za pomoc

Nahlásit jako SPAM
IP: 212.89.239.–
Radek Chalupa
~ Redaktor
+1
Super člen
6. 5. 2016   #2
-
0
-

#1 nord
Záleží v jakém formátu to je uložené. Pokud čísla textově, tak to máš blbý, musíš to parsovat a to bude vždy mnohem pomalejší než když je to uložené binárně - tj. prostě obsah paměti tak jak je zapsaný do souboru a při načítání pak obsah najednou načíst zase do (předem alokovan) paměti.

A pokud jde o vlastní načítání, tak nejrychlejší je samozřejmě načíst celý soubor jedinou "čtecí" operací, ve Windows konkrétně funkcí ReadFile, s tím že po otevření (CreateFile) zjistíš velikost (GetFileSize), na tuto velikost naalokuješ buffer a zavoláš ReadFile...

Radek Chalupa 
- individuální konzultace, školení programování (C/C++, WinAPI, COM, ActiveX, ATL, C#, NET Framework, MFC) 
- vývoj software na zakázku 
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 89.177.51.–
BDS+3
Věrný člen
6. 5. 2016   #3
-
0
-

#1 nord

Asi nejjednodušší i hodně rychlé řešení, pokud jde například o seznam osob, je mít osobu ve struktuře o pevné velikosti. Například: 

#pragma pack(1)
struct OSOBA
{
 char meno[64]; //takže tady může mít jméno max 63 znaků..
 char priezvisko[64];
 unsigned int stav_konta;
 unsigned short rok_narodenia;
 unsigned short id;
}
#pragma pack()

osoby pak načítat postupně ze souboru o velikosti sizeof(OSOBA).
Nevýhodou je omezení délky textů v kombinaci se zbytečně uloženými bajty (pokud je text kratší než velikost pole) + zápis ukončovací nuly (takže je soubor často o něco větší). Další (nejspíš) nevýhodou je obtížné verzování souboru. 
Výhodou je vysoká rychlost čtení a zápisu do souboru + jednoduchý pohyb v souboru, takže lze jednoduše po editaci zapsat pouze vybrané osoby do souboru (nemusí se přepisovat celý soubor).

Samozřejmě nechci vyvracet nic s toho co napsal Radek Chalupa.

Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
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, 39 hostů

Podobná vlákna

Načítanie zo súboru — založil Grungy

Načítanie matice zo súboru — založil DušanDinoZzo

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ý