ifstreamからint, doubleなどのキャスト

ifstreamからテキストファイル読んでintやらdoubleやらにキャストするので詰まった

template < class T >
void Dtw< T >::readFile( std::vector< T > &dst, const char* path )
{
    std::ifstream fs( path );
    T temp;

    if( !fs )
    {
        std::cout << "Error: cannot open file(" << path << ")" << std::endl;
        exit(1);
    }

    while( fs >> temp )
    {
        dst.push_back( temp );
    }
}

テキストファイルは

0
0.1
0.2
0.3
.
.
.

っていう形式で、最初 double 型だけでやっててうまく行ってたんだけど、int や long にも対応しようとしたらあかんかった

テキストファイルの数字を整数だけにしたら int, long でもおkだった

柔軟に対応しようとしたら一旦 string に格納してから sscanf つかうなり、stringstream 使わないと駄目みたいね