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

Problem z obsługą polskich znaków

+1 głos
58 wizyt
pytanie zadane 10 stycznia w C i C++ przez rolniczy Nowicjusz (210 p.)

Witam! Podczas programowania zauważyłem pewien problem. 

   SetConsoleCP(CP_UTF8);
    SetConsoleOutputCP(CP_UTF8);
     fstream f;
      string d;
    f.open("123.txt");
    while(!f.eof())
    {
      getline(f,d);
      std::cout<<d<<std::endl;
      for(auto x : d)
        std::cout<<x<<std::endl;
    }

Kiedy program ma wyświetlić cały string wszystko działa poprawnie, lecz gdy tylko ma go "rozłożyć" na kawałki i wyświetlać pojedyncze litery powstaje problem przy wyświetlaniu polskich znaków (ą,ę,ć...) i program kończy działanie. Czy wie ktoś może, w którym miejscu popełniam błąd? Pozdrawiam i dziękuję za odpowiedzi :)

1 odpowiedź

+1 głos
odpowiedź 10 stycznia przez j23 Mędrzec (166,040 p.)

Kody znaków w utf-8 mogą być kodowane wielobajtowo, więc wyświetlanie liter wielobajtowych po jednym bajcie może powodować przejście strumienia w stan błędu lub po prostu wyświetlanie "krzaczków".


 while(!f.eof())
 {
   getline(f,d);

Tak jest poprawnie:

while(getline(f,d)) {
    ...
}

 

Podobne pytania

0 głosów
0 odpowiedzi 67 wizyt
pytanie zadane 15 stycznia 2020 w C i C++ przez PirchHD Obywatel (1,730 p.)
0 głosów
1 odpowiedź 2,410 wizyt
pytanie zadane 17 maja 2017 w C i C++ przez chacken Użytkownik (820 p.)
0 głosów
1 odpowiedź 181 wizyt
pytanie zadane 2 lutego 2017 w C i C++ przez Piotr Lis Obywatel (1,330 p.)
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

85,727 zapytań

134,512 odpowiedzi

298,568 komentarzy

56,635 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...