Подскажите аналог метода из Python rjust() для C++

Подскажите аналог метода из Python rjust() для C++. Мне нужно преобразовать время в секундах в формат hh:mm:ss. В Python для этого я использовал метод rjust(), предварительно преобразовав секунды в часы, минуты, секунды:

t = hrs.rjust(2, "0") + ":" + min.rjust(2, "0") + ":" + sec.rjust(2, "0")

здесь метод rjust дополнял нулями слева недостающие позиции.

Возможно в С++ есть метод, который непосредственно это выполнит, без дополнительных преобразований.

Попробовал в таком виде, но секунды представлены только одним разрядом (т.е. вместо "00:00:02" пишет "00:00:2")

  QString hrs = QString::number(h);
  QString min = QString::number(m);
  QString sec = QString::number(s);
  std::ostringstream sstr;
  sstr << hrs.toStdString() << std::setw(2) << std::setfill('0') << ":" << min.toStdString() << std::setw(2) << std::setfill('0') << ":" << sec.toStdString() << std::setw(2) << std::setfill('0');
  std::string tm = sstr.str();
  ui_progress->label_remaining->setText(QString::fromStdString(tm));

Ответы (4 шт):

Автор решения: bipll
#include <sstream>
#include <iomanip>

template<class T> std::string rjust(int n, T &&t) {
    return static_cast<std::ostringstream const &>(
        std::ostringstream() << std::setw(n) << std::setfill('0') << t).str();
}
→ Ссылка
Автор решения: Helg1980

Спасибо! Получилось так:

  std::ostringstream sstr;
  sstr << std::setw(2) << std::setfill('0') << hrs.toStdString() << ":" << std::setw(2) << std::setfill('0') << min.toStdString() << ":" << std::setw(2) << std::setfill('0') << sec.toStdString();
  std::string tm = sstr.str();
  ui_progress->label_remaining->setText(QString::fromStdString(tm));
→ Ссылка
Автор решения: mrHalfer
QString hrs = QString::number(h).rightJustified(2, '0');
QString min = QString::number(m).rightJustified(2, '0');
QString sec = QString::number(s).rightJustified(2, '0');
→ Ссылка
Автор решения: HolyBlackCat

В прекрасном новом мире делают так: std::format("{:02d}:{:02d}:{:02d}", 1, 2, 3) -> 01:02:03.

→ Ссылка