如何在URL中插入值?

时间:2010-07-30 09:49:07

标签: c++ qt qstring

我有以下代码,我尝试将randomValue插入到网址中。

int randomValue = qrand() % 100;
view = new QWebView(this) ;

view->load(QUrl("http://blogsearch.google.com/blogsearch?q=C&start="+randomValue+"&num=1&output=rss"));

报告了以下错误:

  

错误:类型'const char *'和'const char [18]'到二元'运算符+'的无效操作数

因此,我想将randomValue附加到网址中。我该怎么做?

5 个答案:

答案 0 :(得分:4)

使用 QString 。它比std :: string更强大,它可以直接提供你需要的东西。

QString baseurl("http://blogsearch.google.com/blogsearch?q=C&num=1&output=rss&start=%1");
view->load(QUrl(baseurl.arg(randomValue)));

有关详细信息,请参阅QString documentation

答案 1 :(得分:2)

使用sprintf功能。例如,请参阅here

另一种选择是使用std::string甚至std::ostringstream。取决于你喜欢什么(我不知道QUrl可以采用什么类型的参数)。

char mytext[ 256 ]; // make sure the buffer is large enough!
int randomValue = 12345;
sprintf( "http://blogsearch.google.com/blogsearch?q=C&start=%d&num=1&output=rss", randomValue );

请注意您想要价值的%d 。这使得sprintf将其替换为randomValue的值,作为第二个参数传递。有关详细信息,请参阅上面的参考链接。

注意:您可能会考虑按照其他答案中所述的Qt方式进行操作。

答案 2 :(得分:2)

operator +没有char*。您应该使用C ++风格的std::string或qt特定的QString,它们都支持operator +

实际上,QString是一个好主意,因为QUrl在构造函数中接受它。

答案 3 :(得分:0)

使用stringstream构建字符串

std :: ostringstream oss; oss<< “http://blogsearch.google.com/blogsearch?q=C&start=”<< randomValue<< “试验#= 1&安培;输出= RSS”; 视图 - >负载(QUrl(oss.str()));

答案 4 :(得分:0)

使用

... + QString::number( randomValue ) + ...

它应该有用。

C ++(也不是QString)都没有隐含地将数字转换为字符串。