3

我有以下代码,我尝试在其中插入randomValueURL。

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]”类型的无效操作数到二进制“operator+”

所以,我想将 附加randomValue到 URL 中。我该怎么做?

4

5 回答 5

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 文档。

于 2010-07-30T10:03:22.823 回答
2

没有operator +for char*。您应该使用 C++-stylestd::string或 qt-specific QString,它们都支持operator +.

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

于 2010-07-30T10:04:35.753 回答
2

使用该sprintf功能。例如,请参见此处

另一种选择是使用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 方式进行操作。

于 2010-07-30T09:50:25.290 回答
0

利用

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

它应该可以工作。

C++(和 QString)都没有隐式地将数字转换为字符串。

于 2010-07-30T14:25:15.730 回答
0

使用 stringstream 构建字符串

std::ostringstream oss;oss << " http://blogsearch.google.com/blogsearch?q=C&start= " << randomValue << "&num=1&output=rss"; 视图->加载(QUrl(oss.str()));

于 2010-07-30T10:07:05.880 回答