Open alexey-malov opened 8 years ago
map<string, string> GetMapFromFile(string filename)
{
map<string, string> dict;
string key;
string val;
ifstream in(filename);
while (in >> key >> val)
{
dict.insert({ key, val });
}
return dict;
}
dict.emplace(move(key), move(value));
void AskAndSave(string filename, map<string, string> & newWords)
{
ofstream out(filename, ios_base::app);
string save;
cout << "Ñîõðàíèòü ñëîâàðü ïåðåä âûõîäîì? Äà / Íåò" << endl;
getline(cin, save);
if (save == "Äà")
{
for (auto & pair : newWords)
{
out << pair.first << " " << pair.second << endl;
}
out.close();
cout << "Èçìåíåíèÿ óñïåøíî ñîõðàíåíû. Äî ñâèäàíèÿ." << endl;
}
}
строку и мап следует принимать по константной ссылке Функция выполняет 2 действия, что следует из ее имени Варианты решения:
bool AddTranslation(string enWord, map<string, string> & dict, map<string, string> & newWords)
{
string ruWord;
cout << "Íåèçâåñòíîå ñëîâî " << enWord << ". Ââåäèòå ïåðåâîä èëè ïóñòóþ ñòðîêó äëÿ îòêàçà." << endl;
getline(cin, ruWord);
if (!ruWord.empty())
{
newWords.insert({ enWord, ruWord });
dict.insert({ enWord, ruWord });
cout << "Ñëîâî \"" << enWord << "\" ñîõðàíåíî â ñëîâàðå êàê \"" << ruWord << "\"." << endl;
return true;
}
else
{
cout << "Ñëîâî " << enWord << " ïðîèãíîðèðîâàíî!" << endl;
}
return false;
}
Словарь в программе фактически, представлен в виде 2-х map-ов - общий словарь и словарь новых слов. Имело бы смысл ввести сущность "Словарь" в виде структуры или класса. Тогда работать со словарем станет удобнее
Программа неправильно считывает и сохраняет словосочетания в словарь
k=0,65
Fixed