Quote:
Originariamente inviato da Emaborsa
...boh, non la capisco. Saranno le mie scarse conoscenze di C++.
|
Semplicemente quel codice costruisce un oggetto vettore di unsigned char (è uguale anche usando char) ampio imageSize.
Il vantaggio di vector è che è compatibile con gli array del C.
Quote:
ok, capito....allora come faccio? ok posso fare il cast in un char*, ma poi con quello cosa ci faccio? Al momento ho questo codice:
Codice:
char* ptImage = (char*) malloc(imageSize);
memcpy(ptImage, sqlite3_column_blob(pStmt, 3), imageSize);
const unsigned char* ptFilename = sqlite3_column_text(pStmt, 4);
const char* ptFilenameChar = (const char*) ptFilename;
ofstream outfile (ptFilenameChar,ofstream::binary);
outfile.write (ptImage,imageSize);
Questo l'ho fatto per vedere se il codice è OK, e in effetti funziona, dato che mi crea il jpg su disco fisso. Io però ho bisogno dell'oggetto FILE*. C'è un modo per farlo o devo scrivere sul disco (come attualmente fa) e poi aprirlo con fopen?
|
Perchè vuoi proprio farti del male utilizzando FILE*?
In tal caso devi usare le funzioni di io su file del C al posto di ofstream tipo:
Codice:
FILE * fp = fopen(ptFilenameChar, "wb");
fwrite (ptImage, 1 , imageSize , fp );
...
fclose(fp);