#include <iostream>
#include <sstream>
#include <vector>
#include <cstdint>
#include <iterator>
using namespace std;

template <class T> int getVector(istream& s,
                                                                 int32_t         nbrCells,
                                                                 typename vector<T>::iterator iter)
{
        int             rc = 0;
        typename vector<T>::iterator save = iter;

        if (s.flags() & ios::hex)
        {
                uint32_t        utemp;
                while ((distance(save, iter) != nbrCells) && (s >> utemp))
                        *iter++ = utemp;
        }
        else
        {
                int32_t         temp;
                while ((distance(save, iter) != nbrCells) && (s >> temp))
                        *iter++ = temp;

        }
    return rc;
}
int main()
{
    std::vector<int32_t> v(10);
    std::istringstream is("1 2 3 4 5\n6 7 8 9 10");
    const int32_t NCO=10;
    int rc = getVector<int32_t>(is, NCO, v.begin());
    copy(v.begin(), v.end(), std::ostream_iterator<int32_t>(std::cout, " "));
    std::cout << '\n';
}
