Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przepisanie danych do innego pliku z zamianą znaków polskich.

Ostatnio zmodyfikowano 2014-12-26 13:33
Autor Wiadomość
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?
P-123330
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.
P-123345
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
P-123348
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'
P-123351
« 1 »
  Strona 1 z 1