gpt4 book ai didi

c++ - libcurl,如何使用字符串作为密码?

转载 作者:太空宇宙 更新时间:2023-11-04 15:11:56 24 4
gpt4 key购买 nike

按照这个例子:

https://github.com/curl/curl/blob/master/docs/examples/smtp-tls.c

我设法通过设置密码让它工作:

curl_easy_setopt(curl, CURLOPT_PASSWORD, "password");

但是,我想将密码设置为字符串,即:

string myPassword = "password";
curl_easy_setopt(curl, CURLOPT_PASSWORD, myPassword);

然而,当我这样做时,我得到一个错误

curl_easy_perform() failed: Login denied

我仔细检查并让程序在发送前打印原始密码和字符串的值。它们完全一样。我有两个功能可以对此进行测试。它们几乎完全相同,只是一个使用硬编码密码而另一个使用字符串。硬编码的工作正常,但使用字符串的却有登录问题。我该如何解决这个问题?

最佳答案

CURLOPT_PASSWORD选项需要一个 char*,而不是一个 std::string。您传递的类型错误。图书馆正在以“错误”的方式解释您的数据并胡说八道。

这不是诊断,因为curl_easy_setopt使用 varargs 获取不同类型的任意参数,具体取决于设置的选项。 (理想情况下,您的编译器会拒绝或至少警告该程序,但这是使用类型不安全的 C 库的代价!)

您可以使用 std::string::c_str() 传递字符串的 C 字符串版本,像这样:

curl_easy_setopt(curl, CURLOPT_PASSWORD, myPassword.c_str());

存在一个名为 curlpp 的项目 它声称是 libcurl 的类型安全包装器,这可能值得一看。

关于c++ - libcurl,如何使用字符串作为密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54857106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com