Ваш код повсюду, он не очень последовательный, поэтому его трудно понять.
Вот несколько слабых мест:
Это неправильно : myfile.open("text.txt",ios::out);
- зачем открывать поток ввода с флагом out
? это должно быть просто:
string fileline;
ifstream myfile("text.txt");
while(getline(myfile, fileline)) {
// now use fileline.
}
В цикле while вы хотите перебрать содержимое и добавить его на карту? Теперь код выглядит так:
string fileline;
ifstream myfile("text.txt");
while(getline(myfile, fileline)) {
getFreq(fileline, huffmanMap);
}
Следующее исправление, это неправильно : у вас есть typedef и переменная с тем же именем!
typedef map<char,int> huffmanMap;
map<char, int> huffmanMap;
Используйте разумное название
typedef map<char,int> huffmanMap_Type;
huffmanMap_Type huffmanMap;
Следующее исправление , ваша подпись метода getFreq
неверна, вы передаете карту по значению (то есть по копии), а не по ссылке, следовательно, ваша модификация в функции - это копия, а не оригинал!
неправильно: void getFreq(string file, map<char, int> map)
правильно: void getFreq(string file, huffmanMap_Type& map)
Далее: почему clear()
в вышеуказанном методе? Что если есть более одной строки? В этом нет необходимости?
Пока достаточно, почистите код и обновите ваш вопрос, если есть другие проблемы.