|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2007
Messaggi: 173
|
[C++] Lettura di file non di testo
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 ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Per aprire un file in modalità binaria basta specificare ios::binary
Codice:
fstream fs(filename, ios::binary); |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jan 2007
Messaggi: 173
|
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? |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
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. |
|
![]() |
![]() |
![]() |
#5 | |
Member
Iscritto dal: Jan 2007
Messaggi: 173
|
Quote:
In binario già la stampa non mi va (per fare un esempio banale) |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Suppongo che ti basti semplicemente usare il metodo read e passare il contenuto del buffer alla tua funzione di compressione. Codice:
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; } |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:15.