webForumDet fria alternativet

simpelt problem med inmatad sträng i int-variabel

C/C++

3 svar · 177 visningar · startad av Peeer

Medlem sedan mars 20025 907 inlägg
Frågan#1

Har just börjat med c++ och blir något förbryllad här. Matar jag in ett icke-numeriskt värde nedan så blir det någon form av evighetsloop. För er som kan är det nog väldigt simpelt, men jag har ingen aning om hur jag ska lösa det. Hilfe bitte :)

#include <iostream>
using namespace std;

void main(){
	int menuchoice;
	do{
		cout << "Vad vill du göra?\n";
		cout << "1. Addera\n2. Subtrahera\n3. Multiplicera\n0. Avsluta\nDitt val: ";
		cin >> menuchoice;
	}while(menuchoice != 0);
}
Medlem sedan feb. 20044 inlägg
#2

cin >> menuchoice;

hämtar inte in andra värden än int. Därför tilldelas inte menuchoice något nytt värde när cin >> menuchoice; exekveras. Och dessutom så stannar det som skrivits kvar i textbufferten... så samma sak händer om och om igen i loopen.

För att fixa problemet skulle du t.ex. kunna läsa en char (då du förmodligen inte behöver mer än 10 menyalternativ). Och jämföra den variabeln med t.ex. '0', '1' o.sv.

Medlem sedan mars 20025 907 inlägg
#3

Heh, kunde jag ju nästan ha räknat ut själv. Tackar!

Medlem sedan dec. 20025 483 inlägg
#4

[ot]
main() returnerar int.
[/ot]

:)

256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)