Итак, у меня есть вход
x=20
y=40
z=x+y
w=20+40+80
s1="str1"
s2=s1+w
Я храню переменные без операторов в карте как имя переменной и ее тип, например x int, y int и т. Д. c.
map <string,string> finalMap
Я делю переменные каждой строки на вектор строки для каждой строки как токены = {20,40,80}; tokens = {s1, w} и т. д. c.
vector<string> tokens;
Я хочу сравнить переменные в токенах и finalMap, если я уже объявил переменную токенов на карте. Например, z = x + y, x и y уже объявлены в finalMap, я хочу проверить, были ли эти x и y уже объявлены в finalMap, чтобы получить их строку dataType или int. Я использую double для l oop, но по какой-то причине он не работает.
for(auto i=finalMap.begin(); i!=finalMap.end();i++){
for(int j=0; j<tokens.size(); j++){
if(i->first==tokens.at(j)){
tokens.at(j)==i->second;
}
}
}
У меня проблемы с for для l oop выше, потому что, когда я проверяю значения после, кажется, что это не заменяет dataType из карты.
for(int i=0; i<tokens.size()-1; i++){
if(checkType(tokens.at(i))!=checkType(tokens.at(i+1)))
return "undefined";
else
return checkType(tokens.at(i));
}
checkType () возвращает переменный тип строки, будь то string, int или list. Пожалуйста, не понижайте рейтинг. Я новый пользователь, если вам нужно больше подробностей, просто дайте мне знать, я объясню.
Вот вывод:
s1:str
s2:undefined
w:int
x:int
y:int
z:undefined