自各儿定义函数使得输入的数据是整数时才能被使用

自己定义函数使得输入的数据是整数时才能被使用
#include <iostream>
#include<cctype>
#include<queue>
using namespace std;
int main()
{
    int n=promptAndReadInt;

    cout << n;
    return 0;
}


int promptAndReadInt(char)
{
    cout << "enter a whole number:";
    char ch;
    cin >> ch;
    while (isdigit(ch)==false)
        cin >> ch;
    cin.putback(ch);
    int response;
    cin >> response;

    return response;
}
为什么我的这个程序不能实现筛选整数的功能呢?比如我输入的数据是125asd21cfhg,我想让系统只把整数数据读入而忽略其他字母,但是我的程序会报错,而且函数也不能调用,麻烦各位帮我看一下,谢谢。
------解决思路----------------------
http://ideone.com/b8AN3s
------解决思路----------------------
仅供参考
#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
    p=s;
    while (1) {
        k=sscanf(p,"%d%n",&v,&n);
        printf("k,v,n=%d,%d,%d\n",k,v,n);
        if (1==k) {
            p+=n;
        } else if (0==k) {
            printf("skip char[%c]\n",p[0]);
            p++;
        } else {//EOF==k
            break;
        }
    }
    printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.