我已经在 libcurl 周围实现了std::streambufAPI 的读取部分(即underflow()和xsgetn()),以便普通人istream可以将这样的streambuf插件插入其中并从 HTTP 或 FTP 服务器检索内容。它工作得很好。
现在我想实现 API 的写入部分(即overflow()和xsputn()),用于将文件上传到 FTP 服务器以执行以下操作:
ostream os( my_curl_streambuf );
curl_easy_setopt( my_curl_handle, CURLOPT_UPLOAD, 1L );
os << is->rdbuf(); // copy entire contents of istream "is" to ostream "os"
问题是 libcurl 通过设置的读取回调函数使用“拉”API,CURLOPT_READFUNCTION而上面的最后一行代码是“推”的方式。
这可以工作吗?即,用streambufAPI 包装 libcurl 以进行读写?