Вы можете избавиться от тестирования i
(что делает ваш цикл бесполезным) с помощью массивов
int msecsOut = 1234123412;
const int factors[] = {
1000 * 60 * 60 * 10,
1000 * 60 * 60,
1000 * 60 * 10,
1000 * 60,
1000,
100,
10
};
const char* symbols[] = {"H", "H", "M", "M", "S", "S", "MS", "MS"};
// iX: 8H 7H 6M 5M 4S 3S 2MS 1MS 0MS
for (int i = 0; i != sizeof(factors) / sizeof(*factors); ++i) {
const int digitOut = msecsOut / factors[i];
msecsOut = msecsOut % factors[i];
std::cout << digitOut << symbols[i] << " ";
}
std::cout << msecsOut << "MS" << std::endl;