Hej <code> Hej <code>Cin << Endast siffror!
Jag har en inmatning med ett cin kommando i mitt program. Inmatning ska endast ske med siffror mellan 0 och 99, detta har jag ordnat med en if sats, men problemet är att när man slår in en bokstav flippar den ur och "springer" igenom hela programmet. Hur stoppar jag inmattning av bokstäver och andra tecken?
Använder koden...:
cin>>iGuess;
if(iGuess<99 && 0<iGuess)
{
//programmet
}
else
{
std::system("cls");
cout<<"Ogiltligt tecken inmattning"<<endl;
goto begining;
}
MVH
Johan RubensonSv: Cin << Endast siffror!
cin>>iGuess;
if(cin.good() && 0<iGuess && iGuess<99)
{
//programmet
}
else
{
std::system("cls");
cout<<"Ogiltligt tecken inmattning"<<endl;
cin.clear();
goto begining;
}
</code>
Sedan funderar jag över om man kan byta ut <b>goto begining;</b> mot någon bättre typ av loop utan att det blir onaturligt.Sv: Cin << Endast siffror!
Testade det och det resulterade i samma resultat. Denna koden är bara en del av en större kod, goto beginning länkar till en anna del av koden, men det hela ligger i en while snurra. Problemet som fortfarande kvarstår är att matar man in en bokstav får man upp "ogiltling inma..." men programmet står och snurrar, så man kommer inte vidare. Gör man samma sak fast med ett ogiltligt värde i siffer form körs samma procedur men den fortsätter inte snurra och därmed funkar det, men problemet kvarstår med bokstäver....
Någon?
MVH
Johan RubensonSv: Cin << Endast siffror!
cin>>iGuess;
if(cin.good() && 0<iGuess && iGuess<99)
{
//programmet
}
else
{
std::system("cls");
cout<<"Ogiltligt tecken inmattning"<<endl;
cin.clear();
cin.ignore(1024, '\n');
goto begining;
}
</code>