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

[SFML 2.0] [fstream] Wczytanie wstringa z pliku

Ostatnio zmodyfikowano 2013-12-13 14:11
Autor Wiadomość
Wasilek
Temat założony przez niniejszego użytkownika
[SFML 2.0] [fstream] Wczytanie wstringa z pliku
» 2013-08-27 02:09:18
Witam :)

Mam problem z wczytaniem wstringa z pliku.
Oto mój kod:
C/C++
sf::Font font;
font.loadFromFile( "times.ttf" );
wstring stringg;
wfstream plik2;
plik2.open( "text.sc", std::ios::in );
plik2 >> stringg;
plik2.close();
sf::Text text;
text.setString( stringg );
text.setCharacterSize( 30 );
text.setPosition( 100, 200 );
text.setColor( sf::Color::White );
text.setFont( font );
window.draw( text );

Zamiast polskich znaków widzę popularne "krzaczki". Jakimś cudem wcześniej działał ten kod (czy może podobny O.o) i wszystko grało, lecz teraz mam z tym problem.
Szukałem już różnych rozwiązań w internecie lecz nic nie pomogło.

"text.sc" jest kodowany w UTF-8 (bez BOM).
W Code;;Blocks -> Settings -> Editor -> General Settings -> Other Settings mam wybrane UTF-8.

Byłby wdzięczny za każdą pomoc :)
P-90997
kubawal
» 2013-08-27 12:02:01
Może w czcionce nie ma polskich znaków?
P-91008
Wasilek
Temat założony przez niniejszego użytkownika
» 2013-08-27 14:24:32
Czcionka obsługuje polskie znaki (Zażółć gęślą jaźń). Problem jest tylko z wczytaniem wstringa.
Gdy zamiast wczytania dam po prostu:
C/C++
wstring stringg = L"Zażółć gęślą jaźń";
To wszystko jest ok.

Niestety muszę mieć wczytywanie danych z pliku, więc liczę na to, że znajdzie się jakieś rozwiązanie :)
P-91030
Admixior
» 2013-08-27 23:28:06
Nie korzystałem nigdy z CB więc poprawcie mnie jeżeli się mylę:
1.
W Code;;Blocks -> Settings -> Editor -> General Settings -> Other Settings mam wybrane UTF-8.
wg. mnie "Editor" sugeruje że to nie dotyczy kodu wykonywalnego (jakiś modyfikator do STL) tylko zwykłego tekstu, tego co ty piszesz w ów code::block (formatowanie kodu źródłowego). Więc to nic nie zmieni.

2. Spróbuj zrobić dokładnie na odwrót - zapisz polskie znaki w ten sam sposób jak odczytujesz i spróbuj zinterpretować odpowiednio jako UTF-8(bez BOM).
Wtedy pewnie zobaczysz że coś nie tak.

3. Jeżeli nie ma nigdzie windowsowskiej-uniksowskiej funkcji konwertującej te 2 formaty, a deadline się zbliży to najłatwiej zrobić taką konwersję na switchu i 2 funkcjach (jedna zamienia jeden znak a druga całość korzystając z pierwszej).
P-91084
Wasilek
Temat założony przez niniejszego użytkownika
» 2013-08-28 01:56:18
Jeżeli w punkcie 2 chodziło o to abym zapisał najpierw coś do pliku poprzez wofstream, to niestety gdy próbuje zapisać cokolwiek co ma polskie znaki to nic się nie dzieje (plik jest pusty). Normalne znaki zostają zapisane poprawnie (nawet jak mają przed sobą 'L' tzn. L"bez polskich znakow").

Co do 3 punktu to jest chwile z tym poczekam. Tymczasowo w projekcie przeżyję bez polskich znaków, lecz w końcu i tak będę musiał pozbyć się tego problemu.
P-91093
domin568
» 2013-08-30 00:34:51
Musisz zrobić koncertowanie tych polskich znaków na ASCII a potem to odczytywać ( wysyłać do sf::Text ) bo nie dziwne ze masz krzaczki , jeżeli string nie wie o istnieniu takich znaków , ale ASCII możesz spróbować , pamietam ze ja tak robiłem i wszystko działało :)
P-91236
Wasilek
Temat założony przez niniejszego użytkownika
» 2013-08-30 00:47:26
Mógłbyś powiedzieć czym jest "koncertowanie" czy może jakaś literówka się wkradła :)

Edit. Ok ogarnąłem, ze chodzi o konWertowanie :P W każdym razie ja korzystam ze wstringa który teoretycznie jest tablicą w_charT (który jest wide)czyli teoretycznie powinien obsługiwać polskie znaki.
Ewentualnie, w którym miejscu miałbym konwertować polskie znaki na ASCII ? Po wczytaniu do zmiennej wstring powinienem "ręcznie" pozmieniać każdy znak na odpowiadającą mu wersję polską? (o tym wspominał w swoim punkcie 3. kolega wyżej - chyba)
P-91237
domin568
» 2013-08-31 01:02:13
Musisz zrobić tak jak mówisz :) Literowka bo Iphone mi poprawia wyrazy ^^
P-91302
« 1 » 2 3
  Strona 1 z 3 Następna strona