gpt4 book ai didi

c++ - 将动态变量添加到 url

转载 作者:搜寻专家 更新时间:2023-10-31 00:09:04 24 4
gpt4 key购买 nike

我想将动态变量添加到 url 示例:

QNetworkRequest req( QUrl( QString("http://website.com/?test=1&id=1") ) );

但是当我尝试这个时:

// the HTTP request
varUrl = "http://website.com/?test=";
varUrl += info;
varUrl += "&id=";
varUrl += info_2;

QNetworkRequest req( QUrl( QString(varUrl) ) );
QNetworkReply *reply = mgr.get(req);
eventLoop.exec(); // blocks stack until "finished()" has been called

我收到这个错误:

enter image description here

最佳答案

您发布的错误消息部分无关。你的实际问题是这样的:

QNetworkRequest req( QUrl( QString(varUrl) ) );

这被视为函数声明。这是 C++ 中的一个极端情况,它通常被称为“最令人烦恼的解析”。参见 https://en.wikipedia.org/wiki/Most_vexing_parse寻求解释。

在任何情况下,使用QUrl::fromUserInput() 静态函数而不是直接传递查询字符串。这将正确编码查询(否则您需要手动正确地手动编码查询。)所以简而言之,将上面的行更改为:

QNetworkRequest req(QUrl::fromUserInput(varUrl));

这也解决了解析问题;上面的内容被正确地视为变量定义,而不是函数声明,您的代码现在应该可以正常编译。

作为旁注,您可以使用 QString::arg() 函数一次性构建您的字符串,而无需使用 append (+= )操作。所以你可以像这样构造你的 URL 字符串:

varUrl = QString("http://website.com/?test=%1&id=%2").arg(info).arg(info_2);

%1 将替换为 info 的内容,%2 将替换为 info_2 的内容.

关于c++ - 将动态变量添加到 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45178353/

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