Witam!
mam następujący problem:
Robię taki prosty programik konsolowy, który wczytuje listę słów z dwóch plików (o tej samej długości lini) i wstawia je do klasy map /konkretnie map<char*, char*, Str2>/
Problem polega na tym, że odczyt linii (słów) z pliku odbywa się bez najmniejszych kłopotów /czyta prawidłowo/ ale jak trzeba wstawić do map to zamiast właściwego słowa wstawia jakieś "krzaczki". Poniżej załączam kod. Będę wdzięczny za podpowiedź co z tym jest nie tak...
EDIT: A tak jeszcze konkretniej to wstawia nie krzaczki tylko jeden krzaczek (zamiast pierwszego słowa), po czym wyrzuca dźwięk głośniczka z obudowy i na tym koniec zabawy.
// Deklaracja klasy Słownika
class TSlownik
{
private:
class Str2
{
public:
bool operator()(const char* s1, const char* s2) const
{
return strcmp(s1,s2) < 0;
}
};
map<char*,char*,Str2> Words;
public:
void dodaj(char* FROM,char* TO);
void usun(char* FROM);
void Wypisz();
};
//funkcja dodająca - dla danych stałych działa bez problemu
void TSlownik::dodaj(char* FROM,char* TO)
{
Words[FROM]=TO;
}
//funkcja wczytywania z pliku (moment wstawiania)
ifstream baza1,baza2;
char b1[40],b2[40],tmp1[40],tmp2[40];
if(AngPol)
{
strcpy(b1,"ang.txt");
strcpy(b2,"pol.txt");
}
else
{
strcpy(b1,"pol.txt");
strcpy(b2,"ang.txt");
}
baza1.open(b1);
baza2.open(b2);
while(!baza1.eof())
{
baza1.getline(tmp1,40);
baza2.getline(tmp2,40);
S.dodaj(tmp1,tmp2);
}
Tak jak mówię... Słowa są prawidłowo wpisane do tmp1 i tmp2 (sprawdzałem wypis). A funkcja dodaj działa bez problemów dla wywołania np dodaj("abc","bcd"). W czym jest rzecz?