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

C++ mac nie wyświetla poprawnie wszystkich znaków

Object Storage Arubacloud
0 głosów
504 wizyt
pytanie zadane 21 października 2015 w C i C++ przez aspoka Mądrala (5,290 p.)
Kożystam z max i wszystkie programy kompiluje w g++ w terminalu. Podstawiam za zmienną char 219, ale zamiast oczekiwanego znaku pojawia się znak zapytania. Dlaczego?

2 odpowiedzi

+1 głos
odpowiedź 21 października 2015 przez adrian17 Ekspert (344,860 p.)
wybrane 21 października 2015 przez aspoka
 
Najlepsza

Podstawiam za zmienną char 219

Tablica ASCII ma 128 znaków. Jakiego znaku oczekujesz?

komentarz 21 października 2015 przez aspoka Mądrala (5,290 p.)
Masz znaki specjalne takie jak np. pełna kratka. Jak robiłem to w szkole na windowsie to działało prawidłowo.
komentarz 21 października 2015 przez aspoka Mądrala (5,290 p.)
Wydaje mi się, że trzeba by coś do tego załączyć ale nie wiem co.
komentarz 21 października 2015 przez adrian17 Ekspert (344,860 p.)
Znaki poza tabelą ASCII zależą od kodowania w programie czytającym dane do wyświetlenia, tu: terminalu. Mój terminal używa strony znaków 437: https://en.wikipedia.org/wiki/Code_page_437 (co ogólnie jest powszechnym powodem narzekania na CMD) który faktycznie ma pełną kratkę pod numerem 219, podczas gdy terminale na Linuxach i Macach zazwyczaj domyślnie używają Unicode.
komentarz 21 października 2015 przez aspoka Mądrala (5,290 p.)
A jak podstawić znak z tej strony znaków pod zmienną char? Sory za takie pytania ale w ogule nie mam czasu tego sprawdzić i chciałbym to szybko zrobić.
komentarz 21 października 2015 przez adrian17 Ekspert (344,860 p.)

Bezpośrednie użycie unicode'owego kodu zadziałało u mnie na Linuxie, ale to raczej nie będzie uniwersalne i przenośne rozwiązanie (witamy w świecie Unicode w C++ie):

std::cout << "\u2588";

 

komentarz 21 października 2015 przez aspoka Mądrala (5,290 p.)

O wielkie dzięki w końcu działa. Jeszcze mam jedno pytanie, jak to podstawić pod zmięnną a typu char.

Bo żadna z poniższych metod które wydawało mi się, że będą działać nie działa.

char a="\u2588";

char b='\u2588';

char c=\u2588;

 

komentarz 21 października 2015 przez furas Maniak (53,800 p.)
`char` mieści wartości od 0 do 255 (czyli od \u00 do \uFF a dokładniej zapisujac od 0x00 do 0xFF) i większej nie dasz rady podstawić.

Wartość "\u2588" możesz przechowywać jako string/napis.
komentarz 21 października 2015 przez adrian17 Ekspert (344,860 p.)
Bo nie ma prawa zadziałać. char ma 8 bitów i trzyma tylko 255 wartości, nie wciśniesz do niego kilkubajowego znaku unicode'a.
komentarz 21 października 2015 przez aspoka Mądrala (5,290 p.)
Ok wielkie dzięki, Teraz wszystko już rozumiem :)
0 głosów
odpowiedź 21 października 2015 przez furas Maniak (53,800 p.)
Terminal może używać czcionki, w której nie ma zdefiniowanego wyglądu dla takiego znaku.

Podobne pytania

0 głosów
1 odpowiedź 4,164 wizyt
pytanie zadane 19 kwietnia 2015 w C i C++ przez aspoka Mądrala (5,290 p.)
+1 głos
1 odpowiedź 316 wizyt
pytanie zadane 13 kwietnia 2015 w C i C++ przez aspoka Mądrala (5,290 p.)
0 głosów
0 odpowiedzi 382 wizyt
pytanie zadane 26 stycznia 2016 w C i C++ przez niezalogowany

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...