我的代码的简化版本:
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
答案 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;
}
}
}