Несмотря на предупреждение против использования магических чисел 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';
}
}