Я уже некоторое время бью свою голову об стену. То, что я пытаюсь сделать, это прочитать строку ввода и извлечь из нее целые числа и сохранить их для последующего использования.
Пример ввода:
subi r23, R10, 435
Lb r3, -3 (r10)
Пример результатов:
Что касается строки 'subi', мне понадобятся 3 переменные: rs1 = 23, rs2 = 10 и imm = 435.
Для Lb мне понадобится rs1 = 3, rs2 = 10 и imm = -3.
Существует много различных типов входных данных и способ их написания, поэтому я ищу наиболее общий метод. Я думал, что регулярное выражение было ответом, но я лично не мог заставить что-либо работать, и это, возможно, мое невежество по отношению к регулярному выражению. Когда я говорю, что не могу заставить что-либо работать, я имею в виду это, я, честно говоря, не могу опубликовать то, что я попробовал здесь, потому что я почти уверен, что просто придумывал. В настоящее время я использую эту идею:
for(int i = 0; line[i] != '\0'; i++){
if(isdigit(line[i]) != 0){
temp += line[i];
}
}
rs1tmp = temp[1];
rs1 = stoi(rs1tmp);
rs2tmp = temp[2];
rs2 = stoi(rs2tmp);
rdtmp = temp[0];
rd = stoi(rdtmp);
Проблема с этой идеей в том, что она может получить меня только каждую цифру в строке. Он не работает с двузначными или отрицательными числами. Я думал о том, чтобы вложить некоторые операторы if, чтобы проверить вещи рядом с цифрой. Поэтому, как только найдена цифра, я могу посмотреть влево и проверить, является ли она знаком «-», и посмотреть вправо и проверить, является ли она цифрой. Затем возьмите решение этих if и поместите его в вектор.
Хотя я думаю, что моя идея может сработать, я очень надеюсь, что есть лучший способ.
Спасибо всем!