---
title: "Strul med inmatning via cin?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/76570-strul-med-inmatning-via-cin"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Mattias"
published: "2003-05-10T19:42:27.000Z"
updated: "2003-05-11T12:39:06.000Z"
replies: 5
views: 300
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/76570-strul-med-inmatning-via-cin"
---

# Strul med inmatning via cin?

## #1 — Mattias, 2003-05-10T19:42Z

Jag har ett konstigt problem när jag tar in två inmatningar i rad från användaren via cout/cin-satser. När man fått förfrågan och skrivit in första inmatningen så fortsätter programmet \_förbi\_ nästkommande cout/cin-sats utan att man ges nån möjlighet att skriva in det andra värdet. Så här ser koden ut:

```
string sinput, wanted_dir;
char input2[256];
...
cout << "Ange regissör: ";
cin >> sinput;
wanted_dir = sinput;
	
cout << "Ange år: ";
cin >> input2;
wanted_year = atoi(input2);
...
```

Programmet forsätter alltså förbi "Ange år"-frågan utan att man får chans att skriva in något. Vad kan detta bero på?

Tacksam för svar!

Permalänk: https://www.webforum.nu/p/76570

## #2 — Mc Fetto, 2003-05-10T22:49Z

Jag har ingen 100% koll på ditt problem men jag tror det har något med att "enter tryckningen" inte fångas upp utan läggs i dina andra inmatningar! prova att deklarera en char (char c)
och fånga upp enter med: cin.get(c); efter dina cin\>\> ...

r/ Hos mig fungerade din kod finfint!

Permalänk: https://www.webforum.nu/p/1042714

## #3 — Mattias, 2003-05-11T07:48Z

Ja, har också hört att man kan använda flush() för att rensa nån buffert, men kompilatorn klarade inte "flush(cin)" och det hjälper inte att köra "flush(cout)". Programmet fortsätter alltså ändå förbi fråga 2. Jag har alltså lagt flusharna precis innan fråga 2 i koden.

Angående cin.get(c) så hade det blivit smidigare att direkt plocka in användarinmatningen till string istället för att gå omväg om char\[\]. Eller förresten, hur smidigt är det att konvertera en char\[\]-string till en "vanlig" string? Finns det nån funktion som plockar över tecknena i char\[\]-stringen till en string?

Permalänk: https://www.webforum.nu/p/1042767

## #4 — Mc Fetto, 2003-05-11T07:54Z

Det jg menade var att du fångar upp din variabel i en string som du redan gör men där efter så plockar du upp return tecknet med en char (cin.get(x);) Så har jag löst det i vissa fall..

Permalänk: https://www.webforum.nu/p/1042769

## #5 — Mattias, 2003-05-11T08:07Z

Nej, det funkar inte. När jag skriver nedanstående kod så plockar programmet endast förnamnet av den regissör jag skriver in och fortsätter förbi fråga 2.:

```
char tempreturn;
...
cout << "Ange en regissör: ";
cin >> sinput;
cin.get(tempreturn); 
wanted_dir = sinput;
cout << wanted_dir << endl; //här skrivs bara förnamnet ut till skärmen
cout << "Ange ett år: ";
cin >> input2;
wanted_year = atoi(input2);
...
```

Permalänk: https://www.webforum.nu/p/1042773

## #6 — Mattias, 2003-05-11T12:39Z

Jag löste problemet genom att skriva så här vid inplockning av tecken:

```
while (cin.get() != '\n');
cin.getline(input, 256);
```

Permalänk: https://www.webforum.nu/p/1042993

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/76570-strul-med-inmatning-via-cin
