webForumDet fria alternativet

cin problem

3 svar · 146 visningar · startad av erik_r

erik_rMedlem sedan maj 200084 inlägg
#1

Hej jag är nybörjare på C++ och har ett problem som borde vara ganska lätt att lösa.
Ta det här programmet som ex:

#include <iostream.h>

int main()
{
	char svar[10];
	int tal;
	
	cout << "Skriv ett tal: ";
	cin >> tal;
	
	cout << "Skriv ett ord: ";
	cin.getline(svar,9);
	
	cout << "Du skrev " << tal << " och " << svar << endl;
	return 0;
}

När de körs frågar det efter en siffra, varefter det ska fråga efter ett ord (jag vill inte använda cin >> svar eftersom det ska kunna vara mellanrum i ordet) men det gör programet aldrig. Det hoppa till sista raden och avslutas.
Kommenterar jag bort raden "cin >> tal;" fungerar det, varför?

SPiNMedlem sedan mars 20005 832 inlägg
#2

Försök med:

...
cin >> tal;
cin.get ();
...
erik_rMedlem sedan maj 200084 inlägg
#3

Pefekt. det fungerar. Tack för hjälpen.

PeWMedlem sedan juni 20006 839 inlägg
#4

Kommenterar jag bort raden "cin >> tal;" fungerar det, varför?

Därför att det du egentligen gör är att läsa en ström av tecken. I tangentbordsbufferten ligger dock vagnretur kvar och skräpar varvid det även blir första tecken vid nästa läsning genom strömmen och alla tecken efter det hoppas över. Det finns olika sätt att hantera detta... ett av dem har SPiN redan skrivit ett annat är att använda flush()... det beror på "när var hur". Skriver man en snutt som ska upp i ett konsolförnster duger cin.get() är det en större applikation har man förmodligen en egen metod som läser strömmar och där kanske inte samma behov uppstår.

Genererad på 369 ms · cache AV · v20260730165559-full.f96bc7eb