簡體   English   中英

CMD、C++ 中的“更新”行

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM