Цин в цикле
Итак, я осмотрелся и не смог понять, что происходит с cin во время цикла «Пока». Я работаю над книгой C ++ Primer (5-е издание) и заметил, что во время одного из упражнений я не мог использовать cin для захвата строк без прерывания цикла while. Я исправил эту проблему, просто используя getline ().
Цель данного упражнения - запросить вводимые пользователем значения от 0 до 15 и преобразовать это число в «Hex Equivelant» (где 0 = 1, 1 = 2, 2 = 3, ..., 10 = А, 11 = В). Я попытался сделать это без книги и потерпел неудачу, но затем начал подвергать сомнению код в книге. Вот код в книге:
//Note: <iostream> and <string> have been included. using namespace std is used
const string hexdigits = "0123456789ABCDEF";
cout << "Enter a series of numbers between 0 and 15"
<< " separated by spaces. Hit ENTER when finished: "
<< endl;
string result;
string::size_type n;
while(cin >> n)
if (n < hexdigits.size())
result += hexdigits[n];
cout << "Your hex number is: " << result << endl;
Если бы я запускал этот код, он никогда не завершил бы цикл while после нажатия клавиши enter без ввода какого-либо кода (по сути, давая ввод пробела, я бы подумал?).
Я здесь по двум причинам:
1) Почему этот код не работает? 2) Я был бы признателен за толчок в правильном направлении, но не за ответ, как заставить этот код работать правильно
Если я не могу получить причину 1 без ущерба для причины 2, я бы предпочел, чтобы причина 1 была выполнена.
Быстрое редактирование: извиняюсь, я использую Visual Studio 2012