Usando un file di appoggio:
codice:
using namespace std;
//Dice al linker di linkare con urlmon.lib (funziona solo con VC++, con altri compilatori aggiungi urlmon.lib ai file da linkare)
#pragma comment(lib,"urlmon.lib")
#include <iostream>
#include <urlmon.h>
#include <fstream>
#include <string>
#include <io.h>
int main()
{
string indirizzo;
char tempFileName[]="~downloadXXXX.tmp";
char buffer[256];
_mktemp(tempFileName);
cout<<"Inserisci l'indirizzo della pagina: ";
cin>>indirizzo;
if(URLDownloadToFile(NULL,indirizzo.c_str(),tempFileName,0,NULL)!=S_OK)
{
cerr<<"Impossibile effettuare il download del file.";
}
else
{
ifstream is;
is.open(tempFileName,ios::in | ios::binary);
if(!is)
{
cerr<<"Impossibile leggere il file scaricato.";
}
else
{
while(is)
{
is.read(buffer,sizeof(buffer));
cout.write(buffer,is.gcount());
}
is.close();
}
remove(tempFileName);
}
return 0;
}
Pre-emptive snarky comment di billiejoex: "In C++ ci vogliono 100 righe per fare qualunque cosa" - risposta: se noti il download del file occupa una sola riga.