前几天有个学妹问了个关于C++下载的问题。对C++我还真是很陌生,所以最近业余也试图学习点.
从网上扒了一下,不过网上的有点错误,有点小修改并加了个保存文件到磁盘,也当是自己学习下呃
![ContractedBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#include
<
iostream
>
#include < fstream >
#include < windows.h >
#include < wininet.h >
#pragma comment(lib, "Wininet.lib")
using namespace std;
#define MAXBLOCKSIZE 1024
int main( void ()){
char isSave;
cout << " 是否保存文件到磁盘?(Y/N)\t " << endl;
cin >> isSave;
char url[] = " http://www.baidu.com " ; // 网址或文件地址
char buffer[ 100000 ]; // 下载文件的缓冲区
DWORD bytes_read; // 下载的字节数
// 打开一个internet连接
HINTERNET internet = InternetOpen( " C++下载 " , INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, NULL);
// 打开一个http url地址
HINTERNET file_handle = InternetOpenUrl(internet, url, NULL, 0 , INTERNET_FLAG_RELOAD, 0 );
// 从url地址中读取文件内容到缓冲区buffer
BOOL b = InternetReadFile(file_handle, buffer, 100000 , & bytes_read);
buffer[bytes_read] = 0 ;
if (isSave == ' Y ' ){
fstream fs; // 写入文件这里可根据自己需要写,
fs.open( " D:\\1.html " ,fstream:: in | fstream:: out | fstream::app);
fs.seekg( 0 ,ios::end);
fs << buffer;
fs.close();
}
cout << buffer << endl;
InternetCloseHandle(internet);
char pause;
cout << " \n\t\r==============下载完了======= " << endl;
cin >> pause;
}
#include < fstream >
#include < windows.h >
#include < wininet.h >
#pragma comment(lib, "Wininet.lib")
using namespace std;
#define MAXBLOCKSIZE 1024
int main( void ()){
char isSave;
cout << " 是否保存文件到磁盘?(Y/N)\t " << endl;
cin >> isSave;
char url[] = " http://www.baidu.com " ; // 网址或文件地址
char buffer[ 100000 ]; // 下载文件的缓冲区
DWORD bytes_read; // 下载的字节数
// 打开一个internet连接
HINTERNET internet = InternetOpen( " C++下载 " , INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, NULL);
// 打开一个http url地址
HINTERNET file_handle = InternetOpenUrl(internet, url, NULL, 0 , INTERNET_FLAG_RELOAD, 0 );
// 从url地址中读取文件内容到缓冲区buffer
BOOL b = InternetReadFile(file_handle, buffer, 100000 , & bytes_read);
buffer[bytes_read] = 0 ;
if (isSave == ' Y ' ){
fstream fs; // 写入文件这里可根据自己需要写,
fs.open( " D:\\1.html " ,fstream:: in | fstream:: out | fstream::app);
fs.seekg( 0 ,ios::end);
fs << buffer;
fs.close();
}
cout << buffer << endl;
InternetCloseHandle(internet);
char pause;
cout << " \n\t\r==============下载完了======= " << endl;
cin >> pause;
}