• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ Code::Blocks wyświetlanie zawartości pliku .txt z polskimi znakami

0 głosów
678 wizyt
pytanie zadane 11 maja 2020 w C i C++ przez Arkadiuszz Nowicjusz (120 p.)

Cześć,

Mam problem z wyświetlaniem zawartości pliku .txt w którym są polskie znaki. Na początku funkcji main ustawiam:
 

setlocale(LC_ALL,"");

dodatkowo stworzyłem funkcję która ma za zadanie tutaj jedynie wyświetlanie zawartości:
 

void wyswietl(char* nazwa_pliku){
wifstream moj;
wstring linia;
moj.open(nazwa_pliku);
if(moj.good()){
while(!moj.eof()){
    getline(moj,linia);
    wcout<<linia<<endl;
}
}
else{
    wcout<<"Nie mogłem otworzyć tego pliku!"<<endl;
}
moj.close();
}


moje kodowanie jest ustawione na domyślnie WINDOWS-1250.
Proszę o pomoc, gdyż polskie znaki są wyświetlane na zasadzie:
 
Ąnformujemy, ĹĽe realizacja zamĂłwieĹ„ w sklepie odbywa siÄ™ na bieĹĽÄ…co, zgodnie z deklarowanymi na stronie terminami. W najbliĹĽszych tygodniach nie planujemy przerw w dostawach, ale z uwagi na to, ĹĽe sytuacja w kraju zmienia siÄ™ niezwykle dynamicznie, prosimy Was, naszych klientĂłw, o cierpliwość i zrozumienie w przypadku niewielkich opóźnieĹ„ w realizacji wysyĹ‚ek (1-2 dni) oraz chsśąwilowych ograniczeĹ„ dotyczÄ…cych przesyĹ‚ek zagranicznych. JednoczeĹ›nie wstrzymujemy moĹĽliwość odbioru osobistego zamĂłwieĹ„.

2 odpowiedzi

+2 głosów
odpowiedź 11 maja 2020 przez Patrycjerz Mędrzec (192,320 p.)

Typ `wchar_t` przechowuje znaki o rozmiarze większym niż `char` (zazwyczaj ma rozmiar 16 bitów). Można go używać np. do przechowywania znaków UTF-16. Strona kodowa Windows-1250 posiada znaki o rozmiarze bajta (8 bitów), więc powinieneś używać typu `char`, tym samym `std::string` zamiast `std::wstring` itd.

Aby używać w Windowsie strony kodowej Windows-1250, możesz wykorzystać:

setlocale(LC_CTYPE, ".1250");

W dzisiejszych realiach stosuje się głównie UTF-8, który umożliwia efektywny zapis znaków wielu języków świata naraz. Windows-1250 jest ograniczony do znaków krajów środkowoeuropejskich i może nie być wspierany przez inne systemy niż Windows.

komentarz 11 maja 2020 przez Arkadiuszz Nowicjusz (120 p.)
pokombinują i dam znać, dzięki :P
0 głosów
odpowiedź 11 maja 2020 przez RaDeK-2020 Użytkownik (670 p.)
Użyłeś kodowania w standardzie UTF-8? Niewiem czy to pomoże. Ale w UTF-8 powinny być polskie znaki.
komentarz 11 maja 2020 przez Arkadiuszz Nowicjusz (120 p.)
Próbowałem z UTF-8 ale bez rezultatu, problem był z plikiem .txt - ustawiłem mu format WINDOWS-1250 i teraz czyta. można zamknąć.

Podobne pytania

0 głosów
0 odpowiedzi 713 wizyt
0 głosów
0 odpowiedzi 272 wizyt
pytanie zadane 1 stycznia 2019 w C i C++ przez wojtij99 Użytkownik (630 p.)
0 głosów
2 odpowiedzi 945 wizyt

93,600 zapytań

142,524 odpowiedzi

322,993 komentarzy

63,085 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...