Интерполяция строки из массива с URL в C ++ для выполнения запроса GET с использованием libcurl - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь сделать запрос GET для пяти разных имен, используя URL-адреса, которые соответствуют каждому имени, но Xcode продолжает сообщать мне рядом со строкой, которая говорит curl_easy_setopt(curl, CURLOPT_URL, namesURL);, что это Cannot pass object of non-trivial type 'std::__1::string' (aka 'basic_string<char, char_traits<char>, allocator<char> >') through variadic function; call will abort at runtime.

Есть ли проблема с интерполяцией строк, которая вызывает эту проблему?Я пытался использовать cout << typeid(stockURL).name() << endl;, чтобы увидеть, с какими типами данных я работаю, но я не понимаю, какие результаты я получаю.

    int main(){
        string names[5] = {"Joe", "Suzy", "Larry", "Sally", "John"};
        for(int i = 0; i < 5;i++){
          string namesURL = "http://names.com/" + names[i];
          cout << url << endl;


          CURL *curl;
          CURLcode res;

          curl = curl_easy_init();
          if(curl) {
              curl_easy_setopt(curl, CURLOPT_URL, namesURL);

              /* Perform the request, res will get the return code */
              res = curl_easy_perform(curl);
              /* Check for errors */
              if(res != CURLE_OK)
                fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));

               /* always cleanup */
               curl_easy_cleanup(curl);
          }
        }
    }

1 Ответ

0 голосов
/ 28 мая 2018

Ботье ответил на мой вопрос в комментариях, указав, что, передав namesURL.c_str(), можно получить const char * вместо std::string.

. Для справки по использованию c_str() Проверьте этот пост .

...