C++中的libcurl:将URL转换为一些奇怪的符号
libcurl in C++: converting URL to some weird symbols
我注意到C++的libcurl会将提供的URL更改为一些奇怪的符号。这是代码:
curl_global_init(CURL_GLOBAL_ALL);
curl_handle = curl_easy_init();
cout << "http://subdomain.mydomain.com/folder/check.php?key=" + key << endl;
curl_easy_setopt(curl_handle, CURLOPT_URL, "http://subdomain.mydomain.com/folder/check.php?key=" + addon_key);
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, &writeCallback);
curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 1L);
res = curl_easy_perform(curl_handle);
这就是我在控制台中得到的:
http://subdomain.mydomain.com/folder/check.php?key=tasdasm34234k23l423m4234mn23n4jk23bjk4b23nasdasdasdasdsdsd
* Rebuilt URL to: � ��g/
* IDN support not present, can't parse Unicode domains
* getaddrinfo(3) failed for � ��g:80
* Couldn't resolve host '� ��g'
* Closing connection 0
当我在Windows中构建项目时,这段代码运行得很好,但当我在Linux中构建时,就会发生这种情况。如果我只是尝试访问"http://subdomain.mydomain.com/folder/check.php"有了这段代码,它就可以工作了,但我一添加密钥,libcurl就会更改整个URL
提前谢谢。
正如我在评论中所说,CURL库是一个C函数库,而C函数对C++中的对象或类一无所知。
执行"http://subdomain.mydomain.com/folder/check.php?key=" + addon_key
时,结果是一个(临时)std::string
对象。将其传递给C函数将不会很好地工作,我很惊讶编译器居然让您毫无怨言地传递该参数。我认为这应该是一个编译器错误,或者至少应该给你一个严厉的警告。
您可以通过创建另一个变量来存储字符串对象来解决这个问题,并使用c_str
成员函数来获得C样式的字符串(指向常量char
的指针):
std::string url = "http://subdomain.mydomain.com/folder/check.php?key=" + addon_key;
curl_easy_setopt(curl_handle, CURLOPT_URL, url.c_str());
我不知道cURL是否复制了字符串,或者是否需要保持url
变量处于活动状态,直到完成所有操作。
它显然能在Windows上运行,这不过是运气。将C++对象传递给不期望它的函数是未定义的行为。
相关文章:
- 将无符号char*转换为std::istream*C++
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 获取隐式转换溢出从无符号到已签名的警告
- 如何在保持其值的同时将 c++ 无符号字符变量转换为 char 变量
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 无法在 Arduino 中uint8_t数组转换为无符号长整型数组
- C ++中无符号位长度类型之间的隐式转换,即uint8_t,uint16_t
- 错误:隐式转换更改符号:'int'到'unsigned long'
- 如何将 UTF-8 文本从文件转换为某个可以迭代的容器,并检查每个符号是否为C++字母数字?
- 将浮点数转换为无符号字符数组并打印出来
- 将无符号转换为复杂<int>原因符号转换警告
- 自动符号转换,用于对类等数学向量进行操作
- 矢量浮点到整数/符号转换
- C++编译器或预处理器是否可以将符号转换为大写
- 在 AND 和比较时进行符号转换
- 多字节到宽字符将 (°) 度数符号转换为
- Java中的反向无符号到有符号转换
- 我能把字符符号转换成字符串吗