LINUX.ORG.RU

[qt] Сложение строк

 


0

0

Привет. Хочется сделать вот такое: QString::sumIt(«ABC» + «DEF» + «GHI»); И чтобы оно возвращало строку-результат. А то как-то не хочется делать QString::append несколько раз. Спасибо.


Может так: QString("") + «ABC» + «DEF» + «GHI».

Qt не знаю.

e3d08dff
()

Или напиши свою функцию для переменного числа параметров.

e3d08dff
()
Ответ на: комментарий от staseg

>QString str=QString(«abc»)+«def»+«ghi»;


Как-то банально. Спасибо. Тема пока открыта, интересно, есть ли другие способы.

ShTH
() автор топика

QString(«ABC») + «DEF» + «GHI»
tr(«ABC») + tr(«DEF») + tr(«GHI»)
QString(«%1%2%3»).arg(«ABC»).arg(«DEF»).arg(«GHI»)

mannaz
()
Ответ на: комментарий от azure

>А почему?

Гораздо красивее в моём случае написать arg = «vcodec=» + vcodec + ":";
Нежели использовать append.

ShTH
() автор топика
Ответ на: комментарий от ShTH

>Гораздо красивее в моём случае написать arg = «vcodec=» + vcodec + ":"; Нежели использовать append.

перегрузить оператор + для сложения char* с char*, который вернет QString. Тогда будет просто:

QString str=«1»+«2»+«3»;

staseg ★★★★★
()
Ответ на: комментарий от e3d08dff

Да, я не прав. Сейчас посмотрел, оказывается делал сложение для char* с string, а не char* с char*.

staseg ★★★★★
()

А не лучше:

QString str = QString(«vcodec=%1:»).arg(vcodec);

Так и красивее, и не надо велосипеды изобретать! Да и во всех Qt'ишных примерах используется arg().

Daeloce
()
Ответ на: комментарий от Daeloce

>А не лучше:

QString str = QString(«vcodec=%1:»).arg(vcodec);


Лучше. Быстрее будет работать.

summatus
()
Ответ на: комментарий от Daeloce

>QString str = QString(«vcodec=%1:»).arg(vcodec);


Вот это кажется самое то, что нужно. Спасибо.

ShTH
() автор топика
Ответ на: комментарий от ShTH

>Гораздо красивее, запутаннее и неоднозначней в моём случае написать arg = «vcodec=» + vcodec + ":";
fixed.

если серьезно, не стоит злоупотреблять перегруженными операторами.
со строками всё ок. там уже все привыкли, что «+» - это strcat

xydo ★★
()
Ответ на: комментарий от xydo

со строками всё ок. там уже все привыкли, что «+» - это strcat

strcat это вообще-то += и потенциальная дыра в безопасности.

Begemoth ★★★★★
()
Ответ на: комментарий от ShTH

Тем что strcpy не контролирует размеры блоков памяти.

Begemoth ★★★★★
()

> Хочется сделать вот такое: QString::sumIt(«ABC» + «DEF» + «GHI»); И чтобы оно возвращало строку-результат.

попробуй так: QString resultat(«ABC» + «DEF» + «GHI»); вроде работало

name_no ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.