Вывод двоичного представления целого десятичного числа

Вывести двоичное представление данного десятичного целого числа.
Код взят из темы на форуме: https://code-live.ru/forum/cpp/866/
Автор идеи: Cranium

Исходный код на языке C++
#include <cstdio>
#include <string>

//Сразу напишем общую версию для всех целочисленных типов
template <typename T>
std::string intToBin(T val) {
    if (val == 0)
        return "0";  //Здесь сработает конструктор std::string

	
	//Буфер для записи двоичного представления
	//Всего битов в числе sizeof(T) * 8, и ещё один на терминальный символ
    char bary[sizeof(T) * 8 + 1];
    
    //Индекс записи в буфер выше
    int idigit = 0;
    
    bool meetOne = false;

	//Спускаемся от старшего к младшему биту
    for (int i = sizeof(T) * 8 - 1; i >= 0; i--) 
    {
        if (val & (T(1) << i)) //Если бит номер i установлен...
        {
			//...записываем 1 в соответствующий бит строкового представления
			//и устанавливаем флаг встречи с 1
            meetOne = true;
            bary[idigit++] = '1'; 
        }
        else 
        {
			//...записываем ноль, но только если до этого была единица,
			//так избавимся от ненужных ведущих нулей
            if (meetOne) 
            {
                bary[idigit++] = '0';
            }
        }
    }
    //Завершение строки терминальным символом
    bary[idigit] = '\0';

    return bary;  //Конструктор std::string
}


int main()
{
    int val;
    while (std::scanf("%d", &val) != EOF)
    {
        std::printf("%s ", intToBin(val).c_str());
    }

    return 0;
}