View Full Version : [C++] Lettura di file non di testo
k_mishima
13-12-2008, 15:37
Salve a tutti, dovrei prepare un progetto per 1 esame di c++ che dice di scrivere un codificatore e un decodificatore che utilizzi il codice di huffman per comprimere vari tipi di file
Mi chiedevo, se il mio file da comprimere è tipo un txt, allora posso tranquillamente aprirlo utilizzando la fstream, ma se volessi aprire un tipo non testuale, ad esempio, un'immagine png, bmp o addiruttura un file video/audio, come dovrei fare? Ci sono comandi diversi? O posso usare sempre la fstream in modalita' binaria? Se si, come? Non ho esperienza riguardo l'apertura in binario.
Se avete qualche link di guide che possono aiutarmi, postate pure :)
Scusate le molteplici domande ma ho molti dubbi :D
tomminno
13-12-2008, 17:25
Per aprire un file in modalità binaria basta specificare ios::binary
fstream fs(filename, ios::binary);
k_mishima
13-12-2008, 20:07
e questa era l'unica cosa che sapevo riguardo il binario, lol
pero' non so se è adatto per i file immagine, video, e sopratutto, dopo come opero su un binario?
tomminno
13-12-2008, 22:01
e questa era l'unica cosa che sapevo riguardo il binario, lol
pero' non so se è adatto per i file immagine, video, e sopratutto, dopo come opero su un binario?
Cosa ci vuoi fare con quel file?
Se devi solo comprimere ti basta leggere il contenuto.
Se invece vuoi elabornare il contenuto, ma non mi sembra questo il tuo caso, forse è meglio che ti affidi a libreire già fatte.
k_mishima
13-12-2008, 23:01
Cosa ci vuoi fare con quel file?
Se devi solo comprimere ti basta leggere il contenuto.
Se invece vuoi elabornare il contenuto, ma non mi sembra questo il tuo caso, forse è meglio che ti affidi a libreire già fatte.
si devo solo comprimere, ma quindi va bene aprirli in binario? e poi mi spiegheresti come comportarmi? forse mi ripeto ma non ho idea di come operare dopo, con i testi è diverso conosco le funzioni da applicarci open, il seekg.
In binario già la stampa non mi va (per fare un esempio banale)
tomminno
14-12-2008, 12:24
si devo solo comprimere, ma quindi va bene aprirli in binario? e poi mi spiegheresti come comportarmi? forse mi ripeto ma non ho idea di come operare dopo, con i testi è diverso conosco le funzioni da applicarci open, il seekg.
In binario già la stampa non mi va (per fare un esempio banale)
la stampa non può funzionare su un file binario, proprio per il tipo di dati contenuto.
Suppongo che ti basti semplicemente usare il metodo read e passare il contenuto del buffer alla tua funzione di compressione.
ifstream is(filename, ios::binary );
if (is.is_open())
{
const int length = 4096
buffer = new char [length];
while(!is.eof())
{
memset(buffer,0,length);
is.read (buffer,length);
zip.Deflate(buffer, length);
}
is.close();
delete [] buffer;
}
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.