|
|||||||
|
|
|
![]() |
|
|
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: 10:41.




















