tBane Temat założony przez niniejszego użytkownika |
» 2024-06-05 18:13:30 również nie działa :-/ źle wyświetla mi wstring'ów.. wcout << L"WCZYTUJE DIALOG 11\n"; string filename = "dialogues/011.txt";
ifstream file( filename ); if( !file.is_open() ) { cout << "cant open dialogue " << filename << "\n"; return; }
string lineUTF8; wstring dialogText; int id = 11;
getline( file, lineUTF8 ); dialogText = ConvertUtf8ToWide( lineUTF8 ); cout << "UTF-8: " << lineUTF8 << "\n"; wcout << "wstring: " << dialogText << L"\n";
Dialogue * dial = new Dialogue( id, dialogText ); dialogues.push_back( dial );
while( std::getline( file, lineUTF8 ) ) { cout << "UTF-8: " << lineUTF8 << "\n"; wcout << L"wstring: " << ConvertUtf8ToWide( lineUTF8 ) << L"\n"; }
file.close();
WCZYTUJE DIALOG 11 UTF-8: "To jest testowa odpowiedź." wstring: "To jest testowa odpowiedUTF-8: 6, "Kim jesteś?" UTF-8: 7, "Co tutaj robisz?" UTF-8: 10, "Nauczysz mnie czegoś o polowaniu?" UTF-8: 8, "Mam skórę wilczura, chcesz ją odkupić?" UTF-8: 11, "Testowa opcja dialogowa" UTF-8: -1, "Żegnaj"
|
|
DejaVu |
» 2024-06-05 18:16:56 Ale Ty masz problem z wiadomościami w konsoli czy w SFML-u? Bo wydawało mi się, że chcesz prezentować wiadomości w grze (SFML), a nie w konsoli. /edit: Możesz jeszcze profilaktycznie sprawdzić czy zadziała: wprintf( L"%s\n", dialogText.c_str() );
|
|
tBane Temat założony przez niniejszego użytkownika |
» 2024-06-05 18:28:21 Dobra, w konsoli i tak się wykrzacza, ale w SFML działa, tak jak mówiłeś. Dzięki za pomoc :-) wcout << L"WCZYTUJE DIALOG 11\n"; string filename = "dialogues/011.txt";
ifstream file( filename ); if( !file.is_open() ) { cout << "cant open dialogue " << filename << "\n"; return; }
string lineUTF8; wstring linewstring; int id = - 1;
getline( file, lineUTF8 ); linewstring = ConvertUtf8ToWide( lineUTF8 );
Dialogue * dial = new Dialogue( 11, linewstring );
while( std::getline( file, lineUTF8 ) ) { linewstring = ConvertUtf8ToWide( lineUTF8 ); dial->options.push_back( DialogueOption( id, linewstring ) ); }
dialogues.push_back( dial );
file.close();
|
|
DejaVu |
» 2024-06-05 18:38:45 Jak chcesz, aby Unicode działał w konsoli na Windowsie to: #include <iostream> #include <io.h> #include <fcntl.h>
int main() { _setmode( _fileno( stdout ), _O_U16TEXT ); std::wstring text = L"ąęółźńąźść"; wprintf( L"Polskie znaki: %s\n", text.c_str() ); std::wcout << L"Polskie znaki: " << text << std::endl; return 0; }
Przynajmniej u mnie po użyciu tego _setMode zadziałało. |
|
tBane Temat założony przez niniejszego użytkownika |
» 2024-06-05 18:59:08 Jeszcze występuje jeden błąd. Dodaje jakiś dziwny znak na końcu na końcu każdej linii. textPart.erase(textPart.size()-1);textPart.erase(textPart.pop_back());Oba nie pomogły, pousuwało znaki zapytania(ostatnie znaki stringa). Stąd wnioskuję, że ten dziwny znak, to jakiś znak oznaczający koniec stringa. Nie wiem jak się go pozbyć :-/ |
|
DejaVu |
» 2024-06-05 19:35:42 Na końcu masz zapewne znaki "\r\n". być może \r jest wyświetlany jako kwadrat, więc możesz po prostu zrobić replace "\r\n" na "\n" po wczytaniu wiersza z pliku. |
|
tBane Temat założony przez niniejszego użytkownika |
» 2024-06-05 19:50:01 Podmiana "\r\n" i "\r" na "\n" nie pomogła void replaceAll( std::string & str, const std::string & from, const std::string & to ) { size_t start_pos = 0; while(( start_pos = str.find( from, start_pos ) ) != std::string::npos ) { str.replace( start_pos, from.length(), to ); start_pos += to.length(); } }
string lineUTF8; getline( file, lineUTF8 ); replaceAll( lineUTF8, "\r\n", "\n" ); replaceAll( lineUTF8, "\r", "\n" );
|
|
pekfos |
» 2024-06-05 20:07:13 A nie możesz po prostu zobaczyć co to za krzak? Nie wiem, debuggerem? Czemu to zgadujecie? |
|
1 « 2 » 3 4 |