webForumDet fria alternativet

simpelt problem med inmatad sträng i int-variabel

C/C++

3 svar · 175 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]

:)

254 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)