У меня есть карта, которая содержит испанские слова в качестве ключей и то же слово на английском языке, что и значения для каждого ключа. Я хочу перевести строку слов с испанского на английский. Я предполагаю, что мне нужно разобрать строку, чтобы отделить слова. Я не знаю, как искать по ключам карты и затем отображать значение.
map<string, string> trans;
tran["rearrancar"] = "reboot";
tran["pantalla"] = "screen";
tran["texto"] = "text";
tran["virus"] = "virus";
tran["tinta"] = "ink";
tran["mitad"] = "half";
tran["interno"] = "internal";
tran["memoria"] = "memory";
tran["papel"] = "paper";
tran["energia"] = "power";
tran["fallo"] = "bug";
tran["pelo"] = "hair";
tran["el"] = "the";
tran["dos"] = "two";
tran["todas"] = "all";
tran["en"] = "in";
tran["de"] = "of";
tran["los"] = "the";
tran["comprar"] = "buy";
tran["tarde"] = "afternoon";
tran["quieres"] = "want";
tran["muchachos"] = "boys";
tran["tienen"] = "have";
tran["ordenador"] = "computer";
tran["con"] = "with";
tran["antes"] = "before";
tran["vacio"] = "empty";
tran["tu"] = "you";
tran["hambre"] = "hunger";
tran["contaminado"] = "corrupt";
tran["a"] = "to";
tran["una"] = "a";
tran["la"] = "the";
tran["cafe"] = "brown";
tran["su"] = "your";
tran["es"] = "is";
tran["quiero"] = "want";
tran["vamos"] = "go";
tran["mi"] = "my";
tran["barco"] = "ship";
tran["nosotros"] = "we";
tran["casa"] = "house";
tran["yo"] = "I";
tran["borrar"] = "delete";
tran["necesita"] = "necessary";
tran["despues"] = "after";
string paragraph ("yo quiero una ordenador virus
todas de los muchachos tienen interno memoria
mi pelo es cafe
tu quieres tinta con su papel
rearrancar el ordenador a vacio el pantalla");
Было бы лучше хранить каждое слово в массиве строк?
Редактировать: теперь я могу найти на карте слово для перевода, но оно падает после 4-го переведенного слова. Я уверен, что это как-то связано с параметрами моего цикла for, но я не знаю, что в него вставить.
stringstream ss(paragraph);
string word = "";
for (int i = 0; i < paragraph.length(); i++) {
getline(ss, word, ' ');
cout << tran.find(word)->second << " ";
}
Абзац - строка, содержащая переводимый абзац. Tran - это название моей карты, содержащей испанские ключи и английские значения.