Вы можете использовать QString.arg следующим образом
QString my_formatted_string = QString("%1/%2-%3.txt").arg("~", "Tom", "Jane");
// You get "~/Tom-Jane.txt"
Этот метод предпочтительнее, чем sprintf, потому что:
Изменение позиции строки без необходимости изменения порядка подстановки, например
// To get "~/Jane-Tom.txt"
QString my_formatted_string = QString("%1/%3-%2.txt").arg("~", "Tom", "Jane");
Или, изменение типа аргументов не требует изменения строки формата, например,
// To get "~/Tom-1.txt"
QString my_formatted_string = QString("%1/%2-%3.txt").arg("~", "Tom", QString::number(1));
Как видите, изменение минимально.Конечно, вам обычно не нужно заботиться о типе, который передается в QString :: arg (), так как большинство типов корректно перегружены.
Хотя есть один недостаток: QString :: arg () не обрабатываетстанд :: строка.Вам нужно вызвать: QString :: fromStdString () в вашей std :: string, чтобы превратить его в QString перед передачей его в QString :: arg ().Попробуйте отделить классы, которые используют QString, от классов, которые используют std :: string.Или, если можете, переключитесь на QString.
ОБНОВЛЕНИЕ: примеры обновляются благодаря Фрэнку Остерфельду.
ОБНОВЛЕНИЕ: Примеры обновляются благодаря alexisdm.