[C++] Problem z zamianą polskich znaków w programie

0

Witam wszystkich na forum. Piszę w sprawie mojego programu.
Ogólnym celem programu jest: wczytanie pytania użytkownika, połączenie programu z internetem, ściągnięcie 10 pierwszych stron dla zadanego pytania, usunięcie znaczników htmla, przeszukanie pozostałego tekstu w celu znalezienia odpowiedzi na pytanie i zwrócenie jej.
Większość mojego programu działa poprawnie, ale problem zaczyna się w miejscu kiedy ze ściągniętych kodów źródłowych stron (10 najlepszych wyników) zapisanych w plikach txt chce zamienić polskie znaki na odpowiedniki (ą na a itp) w celu puźniejsze analizy tekstu.
Moja funkcja zamiany polskich znaków na zwykłe w pliku txt działa dobrze gdy sam stworze plik i zapisze w nim jakiś przykładowy tekst. Gdy funkcja próbuje zamienić znaki w pliku wygenerowanym przez inny fragment kodu pliku funkcja usuwa polskie znaki ale nie wstawia w ich miejsce odpowiedników.
Poniżej zamieszczę kod funkcji:

Czy ktoś mógłby mi pomóc ? Proszę o jakieś wskazówki lub wskazanie funkcji ewentualnie jakiś fragment kodu który mógłby mi pomóc.

Poniżej podaje kod. Proszę, nie wnikajcie w strukturę, kod miał po prostu działać :)

 
void zamien_polskie_znaki_plik(){ //zamienia polskie znaki na zwykłe
	fstream f,k;
	string bufor, slowo;
	
	f.open("dane_poprawione.txt");  // tu można zmienić na dowolny plik txt wynik zamiany znaków i tak bedzie zapisany do pliku linijke niżej
	k.open("dane.txt",fstream::out); // tu nic nie zmieniać bo sie nazwy popiepszą
	
	while(!f.eof()){
		f >> bufor;
		const char* bufor_char = bufor.c_str();
		int bufor_size = bufor.length();

		for(int i=0;i<bufor_size;i++){
			if( bufor_char[i]=='a' || bufor_char[i]=='b' || bufor_char[i]=='c' || bufor_char[i]=='d' || bufor_char[i]=='e' || 
				bufor_char[i]=='f' || bufor_char[i]=='g' || bufor_char[i]=='h' || bufor_char[i]=='i' || bufor_char[i]=='j' || 
				bufor_char[i]=='k' || bufor_char[i]=='l' || bufor_char[i]=='m' || bufor_char[i]=='n' || bufor_char[i]=='o' || 
				bufor_char[i]=='p' || bufor_char[i]=='r' || bufor_char[i]=='s' || bufor_char[i]=='t' || bufor_char[i]=='u' || 
				bufor_char[i]=='q' || bufor_char[i]=='w' || bufor_char[i]=='x' || bufor_char[i]=='y' || bufor_char[i]=='v' || 
				bufor_char[i]=='z' || bufor_char[i]=='A' || bufor_char[i]=='B' || bufor_char[i]=='C' || bufor_char[i]=='D' || 
				bufor_char[i]=='F' || bufor_char[i]=='G' || bufor_char[i]=='H' || bufor_char[i]=='I' || bufor_char[i]=='J' || 
				bufor_char[i]=='K' || bufor_char[i]=='L' || bufor_char[i]=='M' || bufor_char[i]=='N' || bufor_char[i]=='O' || 
				bufor_char[i]=='P' || bufor_char[i]=='R' || bufor_char[i]=='S' || bufor_char[i]=='T' || bufor_char[i]=='U' || 
				bufor_char[i]=='Q' || bufor_char[i]=='W' || bufor_char[i]=='X' || bufor_char[i]=='Y' || bufor_char[i]=='V' || 
				bufor_char[i]=='Z' || bufor_char[i]=='E' || bufor_char[i]=='.' || bufor_char[i]==',' || bufor_char[i]=='!' ||
				bufor_char[i]=='?' || bufor_char[i]=='”' || bufor_char[i]==':' || bufor_char[i]==';' || bufor_char[i]=='(' ||
				bufor_char[i]==')' || bufor_char[i]=='[' || bufor_char[i]==']' || bufor_char[i]=='{' || bufor_char[i]=='}' ||
				bufor_char[i]=='"'){
					slowo.push_back(bufor_char[i]);
					continue;
			} else {
				switch(bufor_char[i]){
					case 'ą' : slowo.push_back('a'); break;
					case 'ć' : slowo.push_back('c'); break;
					case 'ę' : slowo.push_back('e'); break;
					case 'ł' : slowo.push_back('l'); break;
					case 'ó' : slowo.push_back('o'); break;
					case 'ś' : slowo.push_back('s'); break;
					case 'ń' : slowo.push_back('n'); break;
					case 'ź' : slowo.push_back('z'); break;
					case 'ż' : slowo.push_back('z'); break;
					case 'Ą' : slowo.push_back('A'); break;
					case 'Ć' : slowo.push_back('C'); break;
					case 'Ę' : slowo.push_back('E'); break;	
					case 'Ł' : slowo.push_back('L'); break;	
					case 'Ó' : slowo.push_back('O'); break;
					case 'Ś' : slowo.push_back('S'); break;
					case 'Ń' : slowo.push_back('N'); break;
					case 'Ź' : slowo.push_back('Z'); break;
					case 'Ż' : slowo.push_back('Z'); break;
				}	
			}
		}
		k << slowo << " ";
	
		slowo.clear();
	}	

	k.close();
	f.close();
	
	cout<<"koniec zamiany znaków"<<endl;
}
0
char toneutral(char ch)
  {
   static char NEU[]="acelnoszzACELNOSZZąćęłńóśżźĄĆĘŁŃÓŚŻŹ",*POL=NEU+18;
   char *ptr=strchr(POL,ch);
   return ptr?*(ptr-18):ch;
  }

f>>bufor;
for(int i=0;i<bufor.length();++i) bufor[i]=toneutral(bufor[i]);
k<<bufor<<" ";

1 użytkowników online, w tym zalogowanych: 0, gości: 1