Witajcie.
Mam następujący problem: muszę napisać program, w którym muszę odczytać dany znak z pliku, a następnie zamienić go do postaci binarnej. Problem mój polega na tym, że odczytywany znak, reprezentujący polską literę z pliku ma inny kod ASCII niż ten wpisywany z konsoli (problem dotyczy tylko polskich znaków, dla reszty wszystko działa jak należy)
Oto kod pokazujący problem:
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
//inicjalizacja zmiennej polskim znakiem
char znak = 'ć';
cout<<"Polska litera przypisana zmiennej: "<<znak<<" jej kod ASCII: "<<(int)(znak)<<endl;
//odczyt znaku z kosoli
char znak2;
cout<<"Podaj znak: ";
cin>>znak2;
cout<<"Polska litera odczytana z konsoli: "<<znak2<<" jej kod ASCII: "<<(int)(znak2)<<endl;
//odczyt znaku z pliku
ifstream plik;
char znak3;
plik.open("plik.txt");
plik>>znak3;
cout<<"Polska litera odczytana z pliku: "<<znak3<<" jej kod ASCII: "<<(int)(znak3)<<endl;
system("pause");
return 0;
}
A oto rezultat wykonania programu:
Polska litera przypisana zmiennej: Š jej kod ASCII: -26
Podaj znak: ć
Polska litera odczytana z konsoli: ć jej kod ASCII: -122
Polska litera odczytana z pliku: Š jej kod ASCII: -26
Aby kontynuować, naciśnij dowolny klawisz . . .
Dlaczego tylko przy odczycie z konsoli otrzymuje prawidłowy polski znak, a przy wyświetlaniu zmiennej, której na sztywno przypisałem literę 'ć' wyświetla się znak 'Š' i to samo dla pliku, w którym zapisałem literę 'ć' ??