与c ++进行交互

时间:2017-07-16 23:43:57

标签: c++ command-line-interface

我用c ++(cli)编写了一个小程序,允许在网站上发起请求。

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


static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}

int main(void)
{
  CURL *curl;
  CURLcode res;
  std::string readBuffer;

  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/?id=1&hash=123456");
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
    res = curl_easy_perform(curl);
    curl_easy_cleanup(curl);

    std::cout << readBuffer << std::endl;
  }
  return 0;
}

此代码非常有效,可以完成我要求的任务

我需要创建一个交互式版本来修改url的变量。 程序输出示例:

./my_prog
What content do you want to add in the variable id?
1
What content do you want to add in the hash variable?
123456879

在这些问题之后,它将使用问题的结果启动CURL查询 你能解释一下我可以和c ++进行交互吗?

1 个答案:

答案 0 :(得分:1)

要写入控制台,请使用std::cout << "something"获取输入,使用std::cin >> x;

在你的例子中,它看起来像这样:

std::string id, hash;
std::cout << "What content do you want to add in the variable id?\n";
std::cin >> id;
std::cout << "What content do you want to add in the hash variable?\n";
std::cin >> hash;

将新数据插入url,替换这一行:

curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/?id=" + id + "&hash=" + hash);

std::cin将读取输入,直到第一个空白或结束字符,如果由于某些原因你需要输入几个单词,你可以使用getline (std::cin, hash);它将读取全行