在微软中输出 visual studio

output in microsoft visual studio

我正在制作一个使用 libcurl 显示 php 页面输出的应用程序 在终端模式下,此应用运行良好

CURL *curl;
    CURLcode res;

    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "www.sglroostermail.nl/api/getChanges.php?y=1);
        res = curl_easy_perform(curl);

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

但现在我想制作一个图形用户界面应用程序。 对于 GUI,我使用 Microsoft visual studio 2015 --> CLR 空项目。
但是终端代码给出了自己的输出 我想在文本框或标签中显示输出。
例如:(这是 MYForm.h

的一部分
#pragma endregion
private: System::Void MyForm_Load(System::Object^  sender, System::EventArgs^  e) {
}
private: System::Void textBox1_TextChanged_1(System::Object^  sender, System::EventArgs^  e) {

}
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    String ^ klas = textBox1->Text;
    CURL *curl;
    CURLcode res;

    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "www.sglroostermail.nl/api/getChanges.php?y=", klas);
        res = curl_easy_perform(curl);

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

谁能告诉我如何将第一个代码的输出存储在变量、标签或文本框中?

您需要告诉 libcurl 如何处理它从远程服务器接收到的输出。

这里有两个选项可以使用:

默认情况下,这些设置为 fwritestdout,这就是 libcurl 将输出写入终端的原因。 (注意:选项被命名为 'write' 因为一个常见的操作是下载文件并 将其写入 到磁盘。将其视为收到后如何处理数据它,不要认为它是来自服务器的 'reading'。)

如果您想捕获数据,我会这样做:

  • 分配某种容器:有一个字节缓冲区,并将 CURLOPT_WRITEDATA 设置为指向该缓冲区的指针。
  • 创建一个将数据复制到缓冲区的方法,并将其设置为CURLOPT_WRITEFUNCTION。

因为 libcurl 是一个非托管库,所以我会使用 std::vector<uint8_t> 作为缓冲区。写入回调 必须 具有原型 size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata);,我认为处理非托管向量比固定托管缓冲区并正确处理它更容易。