Анализ ввода и вставка отдельных слов в вектор
Начал недавно изучать c++ и решил практиковаться. Есть функция, который анализирует строку string, которая получена из ввода в консоль и помещает все слова в вектор, а цифры в вектор. Вот эта функция
void createArr(const std::string &line,const char* control) {
int pos1 = 0;
std::string x;
std::string result;
result = deleteExtraSpace(line) + " ";
int in = 0;
while (result[pos1] != '\0') {
if (result[pos1] != ' ') {
x.push_back(result[pos1]);
pos1++;
}
else {
if (control[in] == 'I') {
arrI.push_back(inInt(x));
}
if (control[in] == 'S') {
arrS.push_back(x);
}
x = "";
pos1++;
in++;
}
}
}
Функция inInt() преобразует char в int.
int inInt(const std::string &buf) {
int x = buf[0] - '0';
int i = 1;
while (buf[i] != '\0') {
int n = buf[i] - '0';
x = x * 10 + n;
i++;
}
return x;}
Во-первых мне интересно вообще нормально ли подобное решение, а во вторых если функция inInt() получит не числовые символы, а обычные например "dfgg", то она всё равно их преобразует и выдаст не нужный результат. Как не позволить неправильным данным попасть в вектор arrI при этом не завершив работу программы, а позволив человеку повторно ввести команду?