Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Вводить только числа


Автор: Igor_K 20.4.2008, 15:59
Всем привет.

Возникла проблема. Мне нужно разрешить вводить в программу только числа(без всяких предупреждений, просто буквы игнорятся) - это я сделал так:
Код

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    char code;
    while ((int)code != 13)
    {
        code = getch();
        if ((int)code >= 48 && (int)code <= 57)
            cout << code;
    }
    return 0;
}

Тут можно вводить только числа, но от убирать бекспейсом нельзя , а мне возможность стирания нужна. Не подскажите как можно реализовать стирание символа?

Спасибо за помощь!

Автор: JackYF 20.4.2008, 16:58
Возможно, что тебе придётся для этого использовать специальные функции для работы с консолью.
В Windows это SetConsole*, в Unix-like - ncurses & ko

Автор: Igor_K 20.4.2008, 17:41
JackYF, незнаком с этими функциями :((( 

Расскажу как я делал в паскале. Была аналогичная ситуация. 
Я проверял нажатие клавиши BackSpace, и если она была нажата, то просто переводил курсор на один символ влево(gotoxy) и затирал его.

Только я думаю это не очень, должна быть возможность сделать это не так дико, как у меня. smile

Автор: jonie 20.4.2008, 17:59
Код

    while(1)
    {
        char c = getch();
        if(c==8){
            std::cout<<c<<' '<<c;
        }
        if(c<'0'||c>'9') continue;
        std::cout<<c;
    }

ммм?)

Автор: Igor_K 20.4.2008, 20:10
Извините, конечно не в тему, но не хочу еще одну тему создавать.
Как можно подсветить строку в консоле определенным цветом?

Автор: anatox91 20.4.2008, 20:21
Igor_K, где-то это уже обсуждалось и был даже пример, поищи по форуму

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)