Я читаю ввод, используя istringstreams для простого преобразования строки в целое число. У меня проблемы с чтением строки, когда она содержит ошибки, такие как «1 45 3 XXXX 45 X», где я хочу, чтобы она просто игнорировала буквы. Обычно без ошибок я бы просто сделал:
string s = "1 2 34 5 6";
istringstream stream(s);
int temp;
cout << s << " -> ";
while(stream >> temp){
//do something with temp for ex:
cout << temp << " ";
}
Это даст
"1 2 34 5 6" -> 1 2 34 5 6
Очевидно, что это не работает, когда у меня есть строка вида "1 45 3 XXXX 45 X", так как она обрывается в XXXX и не продолжается. Но я хотел бы получить:
"1 45 3 XXXX 45 X" -> 1 45 3 45
Итак, я знаю проблему, но я застрял на том, как ее решить. У меня такое чувство, что должно быть очень простое решение, но я не могу понять, и большинство примеров, которые я искал в Интернете, не учитывают ошибки в данных или слишком сложны для моих нужд.