C++中使用cURL的c_str()拼接向量元素到URL的报错解决
问题解决:libcurl报错"Protocol 'tp' not supported or disabled"
错误原因
你代码里的字符串拼接逻辑存在问题:"http://example.com/" + x中,x是int类型,而字符串字面量属于const char*类型,两者相加会执行指针算术偏移,而非预期的字符串拼接。比如当x为某一数值时,指针偏移后会把原URL的开头截断成"tp://...",libcurl识别到不存在的tp协议,因此抛出错误。
修正方案
需要先将int类型的x转换为string类型,再进行拼接,以下是两种常用实现方式:
方法1:使用C++11及以上版本的std::to_string
int x = numbers[n]; string url = "http://example.com/" + to_string(x); curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
方法2:使用字符串流(兼容旧版C++)
需先包含<sstream>头文件:
#include <sstream> int x = numbers[n]; std::stringstream ss; ss << "http://example.com/" << x; string url = ss.str(); curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
内容的提问来源于stack exchange,提问作者ZIKO
相关产品推荐
相关产品推荐

