Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

dodawanie plików źródłowych i kodowanie pliku

Ostatnio zmodyfikowano 2019-06-30 17:22
Autor Wiadomość
Bartex321
Temat założony przez niniejszego użytkownika
dodawanie plików źródłowych i kodowanie pliku
» 2019-03-29 20:00:37
Mam bardzo krótkie pytania
1. Jakie kodowanie powinien mieć plik, aby można było używać polskich znaków ( aby \162 wyświetlało 'ó', a nie 'r' - jak jest w moim przypadku )
2. Czy jeśli piszę program złożony z kilku plików, to zawsze muszę tworzyć plik z funkcją main, plik nagłówkowy i plik źródłowy?
Bo w moim przypadku to pogarsza czytelność kodu, zamiast poprawiać
P-174274
pekfos
» 2019-03-29 23:33:19
1. Kodowanie pliku nie musi mieć bezpośredniego wpływu na kodowanie znaków w wynikowym programie. Najlepiej używać UTF-8 z BOM żeby unikać błędów kompilacji.
2. Nie.
P-174275
Bartex321
Temat założony przez niniejszego użytkownika
» 2019-03-30 08:35:04
1.
C/C++
#include <iostream>
int main()
{
    std::cout << "\162";
    return 0;
}

r
highlight mode: C/C++
file encoding: UTF-8
Co jeszcze może być przyczyną tego, że pod kodem \162 wyświetla mi się 'r' zamiast 'ó'?

2.Więc jak mogę "pominąć" plik nagłówkowy? Bo potrzebuję po prostu podzielić plik główny na kilka mniejszych, żeby lepiej się pracowało.
P-174277
pekfos
» 2019-03-30 09:08:13
W tym wypadku kodowanie pliku źródłowego nie może mieć znaczenia, bo sam kod źródłowy nie zawiera żadnych specjalnych znaków.
Co jeszcze może być przyczyną tego, że pod kodem \162 wyświetla mi się 'r' zamiast 'ó'?
Poza tym, że \162 to jest 'r', to nie wiem.
//edit: Zdajesz sobie sprawę, że kod znaku w tym zapisie podaje się w systemie ósemkowym, nie dziesiętnym?

Więc jak mogę "pominąć" plik nagłówkowy? Bo potrzebuję po prostu podzielić plik główny na kilka mniejszych, żeby lepiej się pracowało.
#include po prostu wkleja zawartość podanego pliku. Możesz zrobić to sam, ale to nie jest dobry pomysł. Lepiej mieć jeden plik nagłówkowy na wszystkie pliki .cpp, niż nie mieć żadnego.
P-174278
nanoant20
» 2019-03-30 10:06:22
Co jeszcze może być przyczyną tego, że pod kodem \162 wyświetla mi się 'r' zamiast 'ó'?
Poza tym, że \162 to jest 'r', to nie wiem.
Format zapisu pliku .cpp musi się zgadzać z
kodowaniem w terminalu i edytorze jakiego używasz.


P-174280
pekfos
» 2019-03-30 10:33:56
Format zapisu pliku .cpp musi się zgadzać z
kodowaniem w terminalu i edytorze jakiego używasz.
Nie. Załóżmy GCC:
C/C++
#include <cstdio>

int main()
{
    char test[] = "Zażółć gęślą jaźń";
   
    for( int i = 0; i < sizeof test; ++i )
         printf( "%02X ",( unsigned char ) test[ i ] );
   
}
Jeśli zakodujemy ten plik w UTF-8, dostajemy UTF-8 na wyjściu. Jeśli Windows-1250, to Windows-1250. Ale jeśli damy GCC wskazówkę, że plik źródłowy jest kodowany w Windows-1250 (-finput-charset=Windows-1250), nagle na wyjściu mamy UTF-8. To dlatego, że kompilator konwertuje teksty na spójne kodowanie, o ile ma dość informacji, by to zrobić. Domyślnie GCC używa UTF-8, ale nie waliduje napisów. Poprawnym rozwiązaniem jest używanie UTF-8 do kodowania plików (bo litości, mamy 21. wiek..) i jawne określenie wynikowego kodowania, opcją -fexec-charset=Windows-1250, na przykładzie Windows-1250. Inaczej mogą być problemy, że część programu jest kodowana tak, a inna część inaczej, jeśli nie wszystkie pliki są spójnie kodowane, o co nie jest trudno w przypadku wielu plików w projekcie. Poza tym, jeśli się rozmyślimy z konkretnym kodowaniem, wystarczy zmienić jedno ustawienie w projekcie, a nie kodować od nowa wszystkie pliki źródłowe.
P-174281
Bartex321
Temat założony przez niniejszego użytkownika
» 2019-03-30 13:45:00
Mógłby ktoś napisać tutaj kody polskich znaków, albo wrzucić jakiś link? Bo znalazłem już kilka takich spisów i żaden mi nie działa
m.in.:
https://4programmers.net/Forum​/Newbie​/190438-sposob_na_wyswietlanie_polskich_znakow_diakrytycznych_w_programach_konsolowych
206 - ć
210 - ł
230 - ś
242 - ó
245 - ą
251 - ę
253 - ź
276 - ż
344 - ń

U mnie to wygląda tak:
"\206\210\230\242\245\251\253\276\344"
₡¥©ɑ¾ä
 
P-174282
pekfos
» 2019-03-30 13:52:38
Kody polskich znaków w jakim kodowaniu? To ważne. Wejdź w ustawienia konsoli i tam będzie napisane jaka jest bieżąca strona kodowa, np 852.
C/C++
#include <cstdio>

int main()
{
    char test[] = "Zażółć gęślą jaźń";
    printf( "%s\n", test );
    for( int i = 0; i < sizeof test; ++i )
         printf( "%02X ",( unsigned char ) test[ i ] );
   
}
C:\Users\admin\Desktop\_test_>g++ a.cpp -fexec-charset=852

C:\Users\admin\Desktop\_test_>a
Zażółć gęślą jaźń
5A 61 BE A2 88 86 20 67 A9 98 6C A5 20 6A 61 AB E4 00
Kod źródłowy kodowany w UTF-8. To wystarczy, by wyświetlały się polskie znaki. Nie musisz znać ich kodów.
P-174283
« 1 » 2 3 4
  Strona 1 z 4 Następna strona