Мне нужно получить ввод от пользователя, но если передан недопустимый аргумент, то сообщения "Invalid" складываются.
Я бы предпочел, чтобы он просто продолжал печатать недопустимый в той же строке, а затем один развведен правильный ввод, он сбрасывает строку в исходный вопрос.
Я видел разговоры об использовании \ r, но, похоже, он не работает для меня.
bool getInput(std::variant<std::string, float>* toOut, bool* restart, bool* qUsed){
std::string userIn;
std::cin >> userIn;
if(userIn == SENTINAL){
*restart = true;
return false;
}
try {
*toOut = std::stof(userIn);
} catch(std::invalid_argument) {
if(userIn == TO_SOLVE && !*qUsed){
*toOut = TO_SOLVE;
*qUsed = true;
} else {
std::cout << "\rInvalid, please try again : ";
getInput(toOut, restart, qUsed);
}
}
return true;
}
Я не поставилпока не возвращаюсь к исходному вопросу.
Когда я запускаю эту команду, \ r ничего не делает.
Почему это / как лучше всего "обновить" текст cmd?