[英]“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.