忽略用户输入C ++中的字母

时间:2015-02-19 06:18:49

标签: c++

我的代码的简化版本:

vector<double> iV;
double i;
cout << "Enter numbers:\n";

while(cin >> i) {
    iV.push_back(i);
}

for (auto e : iV) {
    if (!iV.empty())
        cout << e << endl;
}

现在这样做是从cin读取double类型的数字,将它们加载到矢量中,然后打印它们。但是,用户必须输入一封信来提交输入。 我不想要这个。我希望忽略用户输入的任何字母。

例如,

输入数字:
56 f 45.6 200.1 6g

应该有输出:
56个
45.6
200.1
6

1 个答案:

答案 0 :(得分:2)

string process( const string& input ) // Removes all characters except <space>, '.' and digits
{
    string ret;
    for ( const auto& c : input )
    {
        if ( c == ' ' || c == '.' || ( c >= '0' && c <= '9' ) )
        {
            ret += c;
        }
    }
    return ret;
}

int main()
{
    string line;
    vector<double> iV;
    double i;
    while ( getline( cin, line ) )
    {
        line = process( line );
        stringstream ss( line );
        while ( ss >> i )
        {
            iV.push_back( i );
        }
    }

    for ( auto e : iV )
    {
        if ( !iV.empty() )
        {
            cout << e << endl;
        }
    }
}