Avatar billede fritz-79th Nybegynder
11. oktober 2005 - 21:27 Der er 9 kommentarer og
1 løsning

cin springer over!

Halløjsovs.

her er en del af en funktion der skal tage input for brugeren - men problemet er at cin.getline() springer over den første gang i loopet. hvad går galt?

void NavyBattle::startGame(void)
{
    int currentPlayer = 0;
    char *curName = players[currentPlayer].getName();
    bool inputIsCorrect = true;
   

    while(!gameOver)
    {
        curName = players[currentPlayer].getName();

        inputIsCorrect = true;
        char input[100];
        input[0]='a';//test
        input[1]='b';

        cout << curName << " - make a move!" << endl;
        cin.getline (input,100);


        int iRow = (int)input[0];// get the ascii values from user
        int iCol = (int)input[1];


        cout << "row: " << iRow << " col: " << iCol << "\n";

        currentPlayer++;
        if(currentPlayer > 1)currentPlayer = 0;
    }
}
Avatar billede arne_v Ekspert
11. oktober 2005 - 21:31 #1
mit gæt er at du tidligere har læst in med cin<< og at det og getline
ikke virker så godt sammen
Avatar billede fritz-79th Nybegynder
11. oktober 2005 - 21:50 #2
Hmmm... nææ men jeg har nogle scanf kald inden andetsteds. Det kan dan godt være at det er en go ide at være konsekvent med sine måder at hente input på?

- for øvrigt compilede jeg funktionen i et nyt projekt - og her var der ingen fejl. Nogle gode forslag til generel håntering af brugerinput ? - jeg skal jo af med de point ;)
Avatar billede arne_v Ekspert
11. oktober 2005 - 21:51 #3
det er en rigtig god ide ikke at mixe forskellige former for input !
Avatar billede arne_v Ekspert
11. oktober 2005 - 21:52 #4
en oplagt måde er konsekvent at bruge getline og så parse resultatet fra det
Avatar billede fritz-79th Nybegynder
11. oktober 2005 - 21:53 #5
Ok det vil jeg tage som en lærestreg. Hvis du vil have point så læg venligst et svar.
Avatar billede arne_v Ekspert
11. oktober 2005 - 21:55 #6
svar
Avatar billede arne_v Ekspert
11. oktober 2005 - 21:56 #7
der er iøvrigt en anden getline variant som læser STL string's ind
Avatar billede fritz-79th Nybegynder
11. oktober 2005 - 22:00 #8
Ok - jeg støder nok på den hen af vejen, jeg har trods alt kun en uges erfaring med c++. Så STL har endnu ikke været et tema ;)
Avatar billede arne_v Ekspert
11. oktober 2005 - 22:04 #9
string s;
getline(cin,s);

og du skal ikke bekymre dig om plads da den udvider sig selv
Avatar billede fritz-79th Nybegynder
11. oktober 2005 - 22:07 #10
Nå for pokker - se det ser jo snedigt ud, jeg tager en kigger - og bukker og takker!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester