Pliki binarne | znaki diakrytyczne

Pliki binarne | znaki diakrytyczne
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam, podczas uruchamiania tej funkcji zamian polskich znaków wyskakują mi dziwne kształty. Sprawdzałem plik *.txt jest z nim wszystko dobrze. W main dodałem
"setlocale( LC_ALL, "" );"
Spoiler Ukryj
<ort>void wyswietl_test()
{
string zmienna;

ifstream plik_odczyt;
plik_odczyt.open( "test.txt" );

cout << "Po kazdym wyswietleniu pytania nacisnij dowolny przycisk aby kontynuować." << endl << endl;

while( !plik_odczyt.eof() )
{
    for( int i = 0; i < 4; i++ )
    {
        getline( plik_odczyt, zmienna );
        cout <<  zmienna << endl;
    }

    if( plik_odczyt.eof() )
        break;

    getch();
}

plik_odczyt.close();

cout << endl << "Naciśnij klawisz aby kontynuować." << endl;
getch();

}</ort>
Tekstu z trzeciej linijki też nie wyświetla poprawnie. Czy macie jakieś sugestie albo widzicie błąd;
Oraz mam problem z odczytem(zapisem po trosze też) plików binarnych;
<ort>
...
struct Sosoba
{
char imie[ 15 ];
char nazwisko[ 15 ];
int punkty;
float procenty;
};
...
void wyswietl_wyniki()
{
ifstream plik_odczyt( "wyniki1.dat", ios_base::binary | ios_base::in );
string zmienna;

Sosoba dane;

cout << "Po kazdym wyswietleniu pytania nacisnij dowolny przycisk aby kontynuowac." << endl << endl;

for( int i = 1; ; i++ )
{
    plik_odczyt.read( (char*) &dane, sizeof dane );

    cout << i << ". " << dane.imie << " " << dane.nazwisko << " " << dane.punkty << " " << dane.procenty << "%" << endl;

    if( plik_odczyt.eof() )
        break;

    getch();
}

getch();
plik_odczyt.close();

}
... </ort>
W pliku binarnym znajdują się kolejno: imie, nazwisko punkty (np. 0.8) w jednym wierszu. Lecz nie czyta mi tego poprawnie. Wiem, że mogę skorzystać z "getline" i wczytać cały wiersz do zmiennej lecz sądzę, że takiej operacji nie pozwoli mi użyć mój nauczyciel.
Jak widzicie jakiś błąd albo macie jakieś sugestie co może być źle to z góry dziękuje.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

Pewnie masz różne kodowanie w pliku oraz konsoli.

C1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

Szczerze mówiąc to jestem kompletnym laikiem w tym, zawsze po prostu odpalałem kompilator (Code Block) i pisałem co trzeba nie zmieniając nic w ustawieniach. Czy mógłbyś pomóc mi z tym problemem?

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Code::Blocks jest kompilatorem tak bardzo, jak teleskop jest wszechświatem.
Jakie masz kodowanie tego swojego pliku?

C1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

Kodowanie pliku to UTF-8

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Ano, i mamy problem.
W konsoli ot tak sobie UTF-8 nie wyświetlisz.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

Konsola pod Windows nie obsługuje UTF-8.

C1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

A czy da się ten problem jakoś rozwiązać?

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Jakie hasła wpisywałeś w Google w celu rozwiązania tego problemu niewyświetlania się znaków UTF-8 w konsoli Windows?
Ponieważ odnoszę coś wrażenie, że na pałę piszesz posty, zamiast samemu poszukać.

C1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

Zmieniłem kodowanie pliku tekstowego, lecz np "cout << "ć "; " w ten sposób dalej, źle wyświetla

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.