I believe this does everything ZuK's version does, just a little more succinctly:
Code:
bool is_int(const std::string& s)
{
    int i;
    std::istringstream istr(s);
    if (!(istr >> i))
        return false;

    return istr.rdbuf()->in_avail() == 0;
}