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

[C++] Pominięcie komendy getline po wciśnięciu odpowiedniego klawisza

Ostatnio zmodyfikowano 2017-03-20 18:44
Autor Wiadomość
Sumerechny
Temat założony przez niniejszego użytkownika
[C++] Pominięcie komendy getline po wciśnięciu odpowiedniego klawisza
» 2017-03-20 17:53:45
Witam. Mam taki kod:

C/C++
void wczytaj_gre()
{
    system( "cls" );
    cout << "Wprowadz nazwe zapisu" << endl;
    cout << "Wroc (W)" << endl;
    cout << "*";
    getline( cin, player_name );
    string wroc = "W";
    ifstream file(( savefile_path + "/" + player_name + ".txt" ).c_str() );
    if( file.is_open() )
    {
        file >> engine_switch;
        file >> map_switch;
        file >> sub_map_switch;
        file >> player_name;
        //file >> ;
        return;
    }
    else
    {
        if( player_name == wroc )
        {
            engine_switch = 0;
            return;
        }
        else
        {
            system( "cls" );
            cout << "Nie mozna znalezc twojego zapisu gry." << endl;
            system( "pause" );
            wczytaj_gre();
        }
    }
    return;
}
Jest to funkcja wczytujaca dane z pliku .txt. Czy jest mozliwosc przerobienia jej tak, ze podczas getline jesli zostanie wcisniety odpowiedni klawisz, np. backspace, to program pominie czekanie na player_name i przejdzie do return? To co mam teraz dziala, ale moze powodowac konflikty w przypadku gdy istnieje W.txt
P-159181
pekfos
» 2017-03-20 18:24:37
Możesz wprowadzić pusty napis, naciskając od razu enter.
P-159183
Sumerechny
Temat założony przez niniejszego użytkownika
» 2017-03-20 18:44:23
Dzięki! Nie wiedziałem, że tak działa getline.
Wszystko śmiga jak należy :D
Zostawiam kod dla potomnych.

C/C++
void load_game() // loads the game from the stated directory
{
    system( "cls" );
    cout << "ENTER THE SAVE FILE NAME (SAME AS YOUR CHARACTER NAME) OR PRESS ENTER TO GO BACK TO MAIN MENU: ";
    fflush( stdin );
    getline( cin, player_name );
    string name = player_name;
    ifstream file(( savefile_path + "/" + player_name + ".txt" ).c_str() );
    if( file.is_open() )
    {
        file >> engine_switch;
        file >> map_switch;
        file >> sub_map_switch;
        file >> player_name;
        //file >> ;
        return;
    }
    else
    {
        if( player_name == "\0" )
        {
            engine_switch = 1;
            return;
        }
        else
        {
            system( "cls" );
            cout << "COULDN'T OPEN THE SAVE FILE" << endl;
            system( "pause" );
            load_game();
        }
    }
    engine_switch = 1;
    return;
}
P-159184
« 1 »
  Strona 1 z 1