for循环从字符串链接下载文件

时间:2015-10-27 19:53:39

标签: c++ string get int libcurl

我需要从链接批量下载文件,此链接是字符串,我该怎么办?我下载了curl但我不知道如何使用它 字符串就是这样:
www.example.com/item1.jpeg
www.example.com/item2.jpeg
等等。
我不需要更改输出名称,它们可以保持不变。

我正在使用它:

CURL curl; 
CURLcode res; 
curl = curl_easy_init(); 
if(curl) { 
    curl_easy_setopt(curl, CURLOPT_URL, c_str(link)); 
    res = curl_easy_perform(curl); 
    /* always cleanup */ 
    curl_easy_cleanup(curl);
}

但是我收到了错误:

[Error] 'c_str' was not declared in this scope

我的整个脚本是:

#include <iostream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <curl/curl.h>

using namespace std;

int main ()
{
  char buffer[21];
  int start;
  int end;
  int counter;
  string site;
  site = "http://www.example.com/";
  string extension;
  extension= ".jpeg";
  string link;
  cout << "Start: ";
  cin >> start;
  cout << "End: ";
  cin >> end;
  for (counter=start; counter<=end; counter++)
  {
       std::string link = site+itoa(counter, buffer, 10)+extension;
      cout << link;
      cout << "\n";
          ////////////////////////////////////////////////////////////////////////////////    /////////////////////////////////////////////////////
  CURL curl; 
  CURLcode res; 
  curl = curl_easy_init(); 
  if(curl) { 
    curl_easy_setopt(curl, CURLOPT_URL, link.c_str()); 
    res = curl_easy_perform(curl); 
    /* always cleanup */ 
    curl_easy_cleanup(curl);
  }
      ////////////////////////////////////////////////////////////////////////////////    /////////////////////////////////////////////////////
  }
  return 0;
}

错误仍然存​​在。

1 个答案:

答案 0 :(得分:1)

关于c_str的错误与卷曲无关。相反,它表示您没有正确使用C ++字符串。查看文档可以看出c_str是字符串对象的方法。

http://www.cplusplus.com/reference/string/string/c_str/

因此,您很可能需要具有以下形式:

#include <string>
#include <curl/curl.h>

int main () {
  std::string link ("http://www.example.com/foo1.jpg");
  CURL curl; 
  CURLcode res; 
  curl = curl_easy_init(); 
  if(curl) { 
    curl_easy_setopt(curl, CURLOPT_URL, link.c_str()); 
    res = curl_easy_perform(curl); 
    /* always cleanup */ 
    curl_easy_cleanup(curl);
  }
}