Как вставить значение в URL? - PullRequest
3 голосов
/ 30 июля 2010

У меня есть следующий код, где я пытаюсь вставить randomValue в URL.

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 в URL. Как мне это сделать?

Ответы [ 5 ]

4 голосов
/ 30 июля 2010

Используйте для этого 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 .

2 голосов
/ 30 июля 2010

Нет operator + для char*. Вы должны использовать стиль C ++ std::string или qt-специфичный QString, оба они поддерживают operator +.

На самом деле, QString - хорошая идея, потому что QUrl принимает ее в конструкторе.

2 голосов
/ 30 июля 2010

Используйте функцию 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, как описано в другом ответе.

0 голосов
/ 30 июля 2010

используйте

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

, и это должно работать.

Ни C ++ (ни QString) не преобразуют числа в строки косвенным образом.

0 голосов
/ 30 июля 2010

Используйте stringstream для построения строки

std :: ostringstream oss;oss << "<a href="http://blogsearch.google.com/blogsearch?q=C&start=" rel="nofollow noreferrer">http://blogsearch.google.com/blogsearch?q=C&start=" << randomValue <<" & num = 1 & output = rss "; view-> load (QUrl (oss.str ()));

...