Идея такова: прочитайте char
(не число);посмотрите, равно ли оно q
.Если да, выходите.Если нет, то putback
the char
и затем прочитайте число.
#include<iostream>
using namespace std;
int main()
{
char user_input; // note: changed it from string to char
double price;
while (true) // infinite loop; exit conditions are inside the loop
{
cin >> ws >> user_input; // note: it's important to discard whitespace
if (user_input == 'q') // note: changed from " to '
break;
// Note: for putback to succeed, it must be only 1 byte, cannot be a string
cin.putback(user_input);
if (!(cin >> price))
break; // note: exit on error
// Your code here
...
}
}
Эта идея не будет работать, если вы хотите, чтобы пользователь набрал exit
или что-то более длинное, чем 1 байт.Если вам нужна такая длинная команда выхода, вы должны использовать традиционный механизм синтаксического анализа (прочитать строку ввода; сравнить ее с командой exit
; если не равно, , преобразуйте строку в число ).