Анализ ввода и вставка отдельных слов в вектор

Начал недавно изучать 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 при этом не завершив работу программы, а позволив человеку повторно ввести команду?


Ответы (0 шт):