在 C++ 中检查多个项目的有效用户输入的好方法是什么?不是 std::cin >> x >> y >> z;,而是在整个程序中输入

What are good ways to check valid user input for multiple items in C++? Not std::cin >> x >> y >> z;, but input throughout the program

提问人:AlongForTheRide 提问时间:10/12/2023 最后编辑:user12002570AlongForTheRide 更新时间:10/12/2023 访问量:75

问:

我一直在到处寻找这个答案,但我很难找到一个“正确答案”。我希望将来能随身携带一些东西用于基本的控制台程序,重新提示用户,直到他们输入正确的变量类型。这最好是可以在程序的所有部分(主文件、其他 cpp 文件)中使用以防止重复的东西。

我还在学习,所以我看到像“样板代码”这样的词和建议说不要重复自己,这让我很紧张,做一些将来可能会养成坏习惯的事情。话又说回来,我可能只是把事情搞得太复杂了!

这里有一些伪代码来描述我的问题。

#include "RandClass.h"

int main() {
    // Random int
    
    /* 
       **ASK USER INPUT**
       **CHECK INPUT FOR INT USING FUNC**
    */

    // More random blocks of code
    
    /* 
       **ASK USER INPUT**
       **CHECK INPUT FOR INT USING FUNC**
    */

    // So on, so forth
}

// RandClass CPP file

#include "RandClass.h"

void RandClass::randomMutatorFunc() {
    /* 
       **ASK USER INPUT**
       **CHECK INPUT FOR INT USING FUNC**
    */
}

我在 Reddit 上四处浏览,在这里,并且非常谨慎地查看其他随机示例。如果有一个函数可以在我的所有课程中使用,而这个函数不被认为是不好的做法,那就太好了。但同样,像抽象/封装这样的东西不断钻进我的脑海,我不想养成坏习惯。

如果您推荐很棒的图书馆,我全都听!

如果这不是一个好问题,我很抱歉,我没有太多运气,而且信息量有时会让人不知所措。

C++ 输入

评论

0赞 ChrisMM 10/12/2023
你知道如何进行用户输入和验证吗?是什么阻止了你把它变成一个功能?
0赞 underloaded_operator 10/12/2023
您可以创建一个文件,定义该函数,然后将该标头包含在您希望使用它的所有文件中。设计完全取决于你。.h.cpp
1赞 user4581301 10/12/2023
编写一个从用户那里获取输入的自由函数,确认它的 an 并且(可选)该值在有效范围内,这并没有错。在某些情况下,您可以使用模板对其进行冷抽象以涵盖大多数数值类型,这应该是您需要的所有抽象。get_valid_intint
1赞 user4581301 10/12/2023
但请记住要从积木中思考。在单独的函数中实现 和 部分并具有调用这两个函数的包装函数可能是有益的。当用户有异常或没有验证要求时,用户会调用,否则他们会调用 。get_intis_validget_valid_intget_intget_valid_int
0赞 AlongForTheRide 10/12/2023
@ChrisMM 我认为我只是过度考虑了整个抽象的东西

答:

0赞 utnapistim 10/12/2023 #1

这是个好问题。

通常,我是这样进行的:

  • 编写一次代码(在您的情况下,代码将读取一个整数并对其进行验证)。

  • 如果多个位置需要代码,请将代码提取到单独的函数中,放入 CPP 文件,并在头文件中添加声明。

  • 通过在必要时调用函数来重用代码。