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

[C++] Wczytywanie całych lini tekstu z pliku

Ostatnio zmodyfikowano 2014-12-12 23:49
Autor Wiadomość
TheReclif
Temat założony przez niniejszego użytkownika
[C++] Wczytywanie całych lini tekstu z pliku
» 2014-12-12 22:53:08
Witam!
Ostatnio, pisząc grę, postanowiłem zrobić możliwość prostego tłumaczenia na inne języki. Zrobiłem to poprzez parę funkcji. Pierwsza miała ustawiać(po języku) ścieżkę do paczki językowej:
C/C++
string langFilePath;

void Game::setLang( LANG_VER lang )
{
    langVer = lang;
    if( langVer != ENG )
    {
        switch( langVer )
        {
        case POL:
            langFilePath = "resources/packs/lang_files/lang_POL.pack";
            break;
        default:
            break;
        }
    } else
    {
        langFilePath = "resources/packs/lang_files/lang_ENG.pack";
    }
}
Ta działa bez zarzutów. Druga miała za zadanie zwracać tekst w wybranym przez użytkownika języku, przyjmując tylko numer linii w pliku paczki językowej:
C/C++
string Game::getInfoViaLng( int breakCount )
{
    string trash;
    string target;
    fstream file;
    file.open( langFilePath.c_str(), ios::in );
   
    if( file.good() != true )
    {
        file.close();
        cout << "Can't load lang pack " << langFilePath << endl;
    }
    for( int counter = 1; counter == breakCount; ++counter )
    {
        getline( file, trash );
        trash = "";
    }
    getline( file, target );
    file.close();
    return target;
}
Zawartość paczki lang_ENG.pack:
C/C++
You have been selected to Base Project as a chief.
Click on the letter to open it
Click on the letter to take peace its content
When you 're ready, click on the buton
Tutaj zaczynają się kłopoty. Po wywołaniu funkcji w ten sposób:
C/C++
string textFirst = getInfoViaLang( 1 );
wartość textFirst wynosi "Click on the letter to open it".
Po wywołaniu w ten sposób:
C/C++
string textSecond = getInfoViaLang( 2 );
wartość textSecond wynosi "You have been selected to Base Project as a chief."
Tak samo z przypisaniami typu
C/C++
string text[ 2 ];
text[ 0 ] = getInfoViaLang( 3 );
text[ 1 ] = getInfoViaLang( 4 );
Oba elementy tablicy mają taką samą wartość: "You have been selected to Base Project as a chief.".

Gdzie tu jest błąd? Straciłem godziny na testowaniu nowych rozwiązań, ale nigdy nie działały i były... po prostu powodowały u mnie zawroty głowy.
Prosiłbym o wskazanie, gdzie zrobiłem błąd, a jak jest zbyt źle, aby to ratować, to chociażby o działające rozwiązanie. Będę wdzięczny za każdą pomoc.
P-122768
DejaVu
» 2014-12-12 23:44:58
C/C++
string Game::getInfoViaLng( int breakCount )
{
    fstream file;
    file.open( langFilePath.c_str(), ios::in );
    if( file.good() != true )
         return "{ZONK - nie wczytano pliku}";
   
    string result;
    for( int i = 1; getline( file, result ); ++i )
    {
        if( i != breakCount )
             continue;
       
        file.close();
        return result;
    }
    file.close();
    return "{ZONK - koniec pliku}";
}
P-122771
TheReclif
Temat założony przez niniejszego użytkownika
» 2014-12-12 23:49:15
Nie wiem jak, ale działa! A już traciłem nadzieję. Wielkie dzięki.
P-122773
« 1 »
  Strona 1 z 1