lille probelm i c++

Tags:    c++ entity framework asp.net c# mvc

#include <iostream>

using namespace std;

int main()

{
start:
int exit = 0;
int luk;

cout << "hallo hallo." << endl;
cout << "tast 0 for at lukke programmet." << endl;
cin >> luk;
if (luk == exit)
return 0;
else
goto start;
system ("pause");
return 0;
}

Her er problemet hvisjeg trykker på et bogstav, så gentager den programmet hele tiden. Hvad skal jeg gøre for at få programmet til at starte forfra hvis der trykkes på et bogstav ?

// Thomas



3 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Man bør ikke bruge >>, medmindre man er helt sikker på at læse det man forventer.

En løsning:

Fold kodeboks ind/udKode 


Det er ikke nogen god idé at bruge goto i C++ programmer.



Bertel Brander kunne jeg ikke få dig til at forklare hvad de forskellige ting gør ?

#include <string>
#include <sstream>

using namespace std;

template <typename T>
bool Get(T &t, istream &is = cin)
{
string s;
getline(is, s);
stringstream ss(s);
return ss >> t;
}


på forhånd tak..



Problemet med at bruge >> er at hvis den ikke læser det den forventer bliver det hængende i bufferen og er meget svært at få ud.

En bedre løsning er at læse en hel linie (getline) til en streng. Ud fra denne streng laves en stringstream.
En stringstream er en stream på samme måde som cin og cout (og filer) er stream, men en stringstream læser fra en streng.
Fordelen er at vi bare smider stringstream'en væk når vi er færdig med den (man kan ikke smide cin væk) så det betyder ikke noget hvis vi efterlader noget i den.

Get er en template funktion, den kan bruges til at læse alle typer tal (alt der har en >> operator, og som kan være på en linie).

Den returnerer true hvis den kunne konvertere, ellers false.



t