各型の桁数を取得

std::numeric_limits::digits10 で取得出来るみたいですね。
ただし、桁落ちしているらしいので +1 する必要があるみたい?
ここら辺はよく分かっていない。

[ソース]

#include <iostream>
#include <limits>

int
main(){
    std::cout << std::numeric_limits<int>::digits10+1          << std::endl;
    std::cout << std::numeric_limits<unsigned int>::digits10+1 << std::endl;
    std::cout << std::numeric_limits<char>::digits10+1         << std::endl;
    std::cout << std::numeric_limits<short>::digits10+1        << std::endl;
    std::cout << std::numeric_limits<long long>::digits10+1    << std::endl;
    return 0;
}

[出力]

10
10
3
5
19