[英]“Update” line in CMD, C++
我需要从用户那里获得输入,但是如果传入了无效的参数,那么“无效”消息就会堆积起来。
我希望它只是在同一行上继续打印无效,然后一旦给出正确的输入,它就会将该行重置为原始问题。
我已经看到了使用 \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 文本的最佳方式?
if (userIn != required_string)
{
//call the function in itself
}
这称为递归
不确定从项目的其他部分调用此代码是什么样的。
如果正确,您也可以返回 true ,否则返回 false ......然后只需要一个 while 循环或其他东西,直到它正确
似乎这里有很多事情只是为了用户输入
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.