繁体   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