2017-01-19 6 views
-2

В настоящее время я пишу программу на C++ для школы, которая включает в себя ввод данных как количество изменений, а затем рассказывать пользователю, сколько кварталов, копейки, никелей и пенни они требуют внести указанное изменение. Однако, если пользователь вводит какой-либо символ или строку, программа переходит в бесконечный цикл, печатая два или три моих сообщения на неопределенный срок. Есть функция или какой-либо другой метод, который я могу использовать для предотвращения этого?Функция C++ для проверки, является ли вход целым?

Edit: Вот некоторые из моего кода, что я думаю, что представляет собой проблему

#include <iostream> 
#include <iomanip> 
#include <cstdlib> 
#include <cctype> 
#include <sstream> 
using namespace std; 
int main() 
{ 
     cout << "\nMake Change v0.6.4\n"; 
     cout << "Type 0 at any time to exit the program.\n"; 
     char confirmExit; 
     int amount; 
     while (tolower(confirmExit) != 'y') 
     // allows the user to continue using the program with having to type a.out everytime 
     // but quit the application at any time with two keystrokes and 
     // confirmation so as to not accidentally exit the program 
     { 
       cout << "\nEnter the amount of change as an integer: "; 
       // input total cents to be worked with 
       cin >> amount; 
       if ((amount)!int) 
       { 
         cout << "\nMake sure to type an integer!\n"; 
       } 
       else if (amount == 0) 
       { 
         cout << "Are you sure you want to exit the program(y/n)? "; 
         cin >> confirmExit; 
         // confirmation to prevent accidentally exiting out 
       } 
    cout << "\n"; 
    return (0); 
} 
+0

Разместите код и кто-то может быть в состоянии помочь. –

+0

Простите, я внес некоторые изменения. –

+0

Я не вижу никаких петель. Ваш код, демонстрирующий проблему, не завершен. В идеале вы должны предоставить образец (после удаления всего, что не имеет значения для вашей проблемы), которое можно скопировать/вставить, скомпилировать и запустить, чтобы продемонстрировать проблему. –

ответ

1

В C++ все биты и неявное преобразование может иметь место для преобразования строки или других форм данных в значение int. Вы можете использовать файл заголовков пределов в стандартной библиотеке и установить ограничение на максимальное и минимальное значение ввода. Если вы не можете получить его, тогда прокомментируйте ниже. Я отправлю код.

Эта ссылка может быть useful- Посетите http://lolengine.net/blog/2012/02/08/selectively-restrict-implicit-conversions

+0

Я искал файл заголовка, который вы упомянули (пределы), и смог найти решение. Спасибо! –

+0

Не благодарите меня. Мы здесь, чтобы помочь. И, пожалуйста, проверьте мой ответ, чтобы я мог заработать некоторую репутацию. –