Il mio codice che legge, crea il nuovo file e scrive è questo
char *file = new char[100];
string s;
cout << "Inserire il path file da firmare firma: " ;
cin >> file;
cout << endl;
string buff_file;
string testo;
testo = file;
fstream filestream;
filestream.open(testo.c_str(),fstream::in | fstream::binary); //LEGGE IL FILE IN BINARIO
getline (filestream, buff_file);
filestream.close();
cout<<buff_file<<endl;
string percorso_file;
percorso_file = "/root/nuovo_file.tar.gpg";
filestream.open(percorso_file.c_str(),fstream::out | fstream::binary); // CREA FILE IN BINARIO
filestream.write(buff_file.c_str(), buff_file.size());//SCRIVE SU FILE BINARIO IL CONTENUTO DI BUFF_FILE
filestream.close();
non far caso all'impostazione, sono un pò scarso di c++