Przepisanie danych do innego pliku z zamianą znaków polskich.
Ostatnio zmodyfikowano 2014-12-26 13:33
Wstydliwy_Antoni Temat założony przez niniejszego użytkownika |
Przepisanie danych do innego pliku z zamianą znaków polskich. » 2014-12-25 20:42:35 Witajcie! Dopiero uczę się programować i próbuję napisać program do zamiany w pliku znaków polskich na łacińskie (np. ń na n, ł na l itd.) Do teraz napisałem taki kod:
#include <iostream> #include <fstream> #include <string> #include <cstdlib> using namespace std;
int main() { START: string plik_a; string plik_b;
cout<<"\n\n\tPodaj nazw\251 pliku wejsciowego : "; cin>>plik_a; ifstream czyt(plik_a.c_str() ); if(!czyt) { cout<<"\n\n\tNie mogê otworzyc takiego pliku!\n\n"; system("pause"); goto START; }
cout<<"\n\tPodaj nazwe pliku wyjsciowego :"; cin>>plik_b; ofstream pisz(plik_b.c_str()); if(!pisz) { cout<<"\n\tNie moge otworzyc takiego pliku!\n"; system("pause"); goto START; }
char c;
while(czyt.get(c)) {
if(c='\206') { c='c'; }
else if(c='\210') { c='l'; } else if(c='\230') { c='s'; } else if(c='\242') { c='o'; } else if(c='\245') { c='a'; } else if(c='\251') { c='e'; }
else if(c='\253') { c='z'; } else if(c='\276') { c='z'; } else if(c='\344') { c='n'; }
if(!pisz.put(c)) { cout<<"\n\tBlad pisania.\n"; break; } }
if(!czyt.eof()) { cout<<"\n\tBlad czytania!"; } }
W efekcie plik B zawiera same litery 'c'. Co tu jest nie tak? |
|
Tomek_z_W11 |
» 2014-12-26 11:50:53 W ifach używasz operatorów przypisania, raczej miałeś na myśli porównanie.
I nie bardzo wiem czemu piszesz '\344', chodzi mi o ten backslash. |
|
Wstydliwy_Antoni Temat założony przez niniejszego użytkownika |
» 2014-12-26 13:06:48 Tak, chodziło o porównanie, jednakże po zastosowaniu operatorów porównania program przepisuje BEZ zamiany polskich znaków, zarówno z backslashami przy numerkach i bez. Gdzieś czytałem że char o wartości '\344' to ń, ale o wartości '344' to już stała wieloznakowa. Jak to rozumieć i jak w końcu doprowadzić ten program do działania? ;x |
|
Monika90 |
» 2014-12-26 13:33:00 '\344' to ń pod warunkiem, że przetwarzany plik używa strony kodowej 852, jeżeli używa np. kodowania 1250, to wtedy ń to '\361' |
|
« 1 » |