Вам нужно проверить, есть ли у вас номер или нет.используйте ответ отсюда:
Как определить, является ли строка числом с C ++?
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
bool is_number(const std::string& s){
std::string::const_iterator it = s.begin();
while (it != s.end() && std::isdigit(*it)) ++it;
return !s.empty() && it == s.end();
}
int main ()
{
vector<int> analogueReadings;
std::istringstream output("31 #00 532 04hello 099 53 803 33 534 23 37");
std::string tmpbuff;
while(output >> tmpbuff){
if (is_number(tmpbuff)){
int num;
stringstream(tmpbuff)>>num;
analogueReadings.push_back(num);
}
}
}
результат равен 31 532 99 53 803 33 534 2337
Также, важный недостатки использования лексических приведений, подобных этому, описаны здесь: Как проанализировать строку в int в C ++? , где альтернатива *Дается 1014 *.
Например, 04hello становится 4, а 7.4e55 становится 7. Есть также ужасные проблемы с недостаточным и недостаточным объемом.Чистое решение Андре Карона преобразует
25 10000000000 77 0 0
в
25 0 0
в моей системе.Обратите внимание, что также отсутствует 77