Humanizando o tamanho do byte em C ++

Então, agora estou trabalhando com alguns algoritmos C ++ e preciso mostrar algumas informações sobre o uso de memória, mas o problema é que, quando você pergunta o, sizeof(something)vai obtê-lo em bytes, o que é meio inútil para um usuário ler durante o trabalho.

Quer dizer, eu ficaria chateado se um programa dissesse que está usando 33285996544 bytes da minha memória .

Então, fiz esta pequena função para arredondá-la para um tamanho compreensível e retornar como uma string formatada, dê uma olhada:

#include <string>

string hByte
(unsigned int bytes){
string r
;
if (bytes <= 0) r = "0 Bytes";
else if (bytes >= 1073741824) r = to_string(bytes/1073741824) + " GBytes";
else if (bytes >= 1048576) r = to_string(bytes/1048576) + " MBytes";
else if (bytes >= 1024) r = to_string(bytes/1024) + " KBytes";
return r;
};

editado: alterado para unsigned intno argumento.