Добавить удалить символы при нажатии на клавишу возврата - PullRequest
1 голос
/ 21 января 2020

Мне нужно добавить код, который удаляет символы при нажатии на клавишу возврата:

double inputDoubleNumber() {
    double result = 0;
    int char_code;
    std::string buffer = "";
    bool dot = false;
    do {
        char_code = _getch();
        if (char_code > 47 && char_code < 58 || char_code == 46 ) {
            if (char_code == 46 && dot == true) continue;
            if (char_code == 46) dot = true;
            buffer += (char)char_code;
            std::wcout << (char)char_code;
        }
    } while (char_code != 13);
    std::wcout << std::endl;
    result = atof(buffer.c_str());
    return result;
}

Как я могу это сделать?

1 Ответ

1 голос
/ 21 января 2020

Несмотря на предупреждение против использования магических чисел c, вы можете добавить следующий блок кода сразу после вызова _getch():

    if (char_code == '\b' && !buffer.empty()) { // Ignore B/S if buffer is empty
        if (buffer.back() == '.') dot = false;  // Need to check/reset "dot" flag
        buffer.pop_back();                      // remove last character...
        std::wcout << L'\b' << L' ' << L'\b';   //... and clear from screen
    }

Или, если хотите удалить все вводимые символы с одним нажатием клавиши пробела, вы можете использовать это вместо:

   if (char_code == '\b') {
        dot = false;
        while (!buffer.empty()) {
            buffer.pop_back();
            std::wcout << L'\b' << L' ' << L'\b';
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...