Determine number of even, odd, and zero digits of a given integer
Do not see the point in: get_line()

get_line(line);

// Vs

std::getline(std::cin, line);


Get Integer is well done. Most people forget to test if there is anything else remaining on the line.

A simple enhancement is:

        char remaining;
        if(converter &gt;&gt; remaining)

        // easier to rewrite as:
        if (!converter.str().empty())


Also there is already a boost function that does something similar:

long value = boost::lexical_cast&lt;long&gt;(line); // Will throw if anything left on line.


Over complicating this:

    num = (num - (num % 10))/10;


You can simplify it too:

    num /= 10;  // Integer division truncates.


I think this is a logical error:

    if(res == 0){
        zero++;
    }
    else if(res % 2 == 0){ // zero is an even number
                           // do you really want that else?


Your one major error is:

int oez[3] = {odd,even,zero};
return oez;


You are returning a pointer to an array that has gone out of scope. Personally I would return a std::vector&lt;int&gt;. Don't worry on a simple returning like this the copy back of the array will be optimized out (look up RVO and NVRO).

std::vector&lt;int&gt; oez = {odd,even,zero};
return oez;