C++ FISZKI Polskie, niemieckie i rosyjskie znaki w konsoli - kodowanie


(PanMiko) #1

Witam!

 

Jako, że mam podstawy c++ postanowiłem zrobić program - fiszki, by trochę poćwiczyć i rozwinąć umiejętności programowania. :D\

 

Widzę to tak, że program będzie otwierał losowo jeden z 4 dokumentów (pol, ang, niem, ros) .txt a następnie będzie wybierał z dokumentu losowe słowo. 

Użytkownik musi wpisać pozostałe, a program oceni Dobrze/Źle i ew. poprawi. Przejście do następnego słowa po podaniu odpowiedniego znaku.

 

Chyba nie jest to bardzo skomplikowane? Niestety nie wszystko jeszcze potrafię by zrobić ten program. Póki co jestem na tym etapie: gist

Chciałem sprawdzić jak wygląda sytuacja z różnymi znakami (cyrylica, umlauty, polski). Rzecz w tym, że nie wygląda xD

 

Szukałem, wydaje mi się sporo. Wiem, że to kwestia kodowania, ale nwm jak to zrobić tak żeby w konsoli były niestandardowe znaki.

 

Proszę o pomoc :slight_smile:


(kostek135) #2

Nie ma to sensu. Lepiej zapisać je w formacie CSV, np:

pol;niem;ang;ros

 

Więc tak, wybrałeś najgorszy możliwy tandem, do realizacji tego zadania. Zasięg znaków (umlałty, cyrlica, ogonki) jest na tyle rozległy, że podejrzewam najlepiej użyć byłoby UTF-8. Jak znam polskie realia, to pewno będzie standard 98 albo 03, w którym pojęcie UTF-8 nie istnieje.Do tego nakłada się archaiczny cmd (jak rozumiem rozmawiamy o windowsie).

Moja propozycja wygląda tak

  1. Zaopatrzyć się w bibliotekę, która umożliwi obsługę utf-8: http://utfcpp.sourceforge.net/

  2. Zmienić system na taki, którego konsola nie jest sprzed 20 lat (Ubuntu, Linux Mint - powinny być dobre dla laika, do celów nauki programowania wystarczą na jakimś darmowym VirtualBoxie).

Z takim tandemem, wszystko będzie działać out of box.

Jeśli jednak naciskasz na pozostanie przy programistycznej patologii: http://stackoverflow.com/a/388500 może to pomoże, ale poza samą odpowiedzią zwróć uwagę na najbardziej zalajkowany komentarz.


(PanMiko) #3

Jako, że to już druga taka opinia (mój kolega też powiedział że najlepszym rozwiązaniem jest linux) to chyba temat do zamknięcia. Dziękuję, zobaczę może coś się da jeszcze z windowsem zrobić D: