Witam. Mam napisaną hashmapę-słownik (nie moge korzystac z STLowych). Wrzucam do niej stringi. (mapa jest na template)
Problem tkwi w tym, że gdy wpycham do niej insertem wyraz "milo" ze stringa do_zmiany to do hash mapy trafia string "lilo", gdy wpisze "bilo" dostaje "ailo" tak jakby pierwsza litera stringa byla cofnieta o 1.
wszystko psuje funkcja insert.
co najdziwniejsze, tuż przed returnem w insercie string do_zmiany wygląda jeszcze jak "milo" jednak gdy postawię couta od razu po wykonaniu funkcji do_zmiany wygląda już jak "lilo". Do hashmapy też dziwnym trafem trafia "lilo".
Wiem, że to skomplikowany problem, ale może komuś uda się to rozkminić:
trzy pliki, kompiluj maina, a reszta zadziala ze soba.
hashmap.h
http://pastebin.com/qHn5LmN1
main.cpp
http://pastebin.com/KtZADk4w
dane.txt
http://pastebin.com/jqDpzYQA
wygląda to tak, że metoda parsujTekst() parsuje nam plik dane.txt (trzeba podac nazwe pliku po starcie programu) i gdy napotka komende #define costam jakies wyrazenie to wstawia do hashmapy parę costam <-> jakies wyraznie
hashuje na podstawie costam.
zaciąłem się przy wstawianiu (metoda void liniaHash(string &linia) linijka 137, wszystko kreci sie w tej okolicy)
nie wiem dlaczego moj string jest zmieniany.
main.cpp ma juz przykladowe testy ktore wykonywalem, wypisuje wszystko co nie gra.
Założenie programu jest takie, ze wstawia sobie do hashmapy słowa które ma w pliku podmienić, a potem je podmienia.
Poradzę sobie z tym, ale rozwala mnie ten insert... COŚ jest nie tak.. nie wiem CO :/
bardzo ładnie proszę o pomoc, mi już głowa od tego pęka...
PS
wstawiając tak:
string pierwszy = "pawel";
string drugi = "milosz";
obiekt.insert(make_pair(pierwszy, drugi));
wszystko działa :/ insert nic nie psuje itd.. dziwne..