--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Код: Выделить всё
#include "stdafx.h"
#include <conio.h>
unsigned getNumber()
{
const int _key_back (0x08);
const int _key_enter (0x0D);
_TCHAR text[16] = _T(""), limit[16];
size_t max_len = _stprintf(limit, _T("%u"), UINT_MAX);
//
int pos = 0;
bool _exit = false;
while (!kbhit() && !_exit)
{
int ch = _gettch();
if (pos == max_len && ch != _key_back && ch != _key_enter)
continue;
//
switch (ch)
{
case _key_enter : // Enter
_exit = true;
break;
case _key_back : // Back
if (pos > 0)
{
text[--pos] = '\0';
_fputts(_T("\b \b"), stdout);
}
break;
default : // Any key
if (_istdigit(ch) > 0)
{
text[pos++] = ch;
text[pos] = '\0';
if ((pos == max_len) && (_tcscmp(text, limit) > 0))
{
text[--pos] = '\0';
} else
{
_fputtc(ch, stdout);
}
}
break;
}
}
//
unsigned result = 0;
_stscanf(text, _T("%u"), &result);
return result;
}
using std::cout;
using std::endl;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Input: ";
unsigned num = getNumber();
cout << endl;
cout << "Output: " << num << endl;
//
_gettch();
return 0;
}