c++ - 清理多个 if 语句 C++

标签 c++ string if-statement

我正在学习“Udemy - 通过开发您的第一个游戏来学习用 C++ 编写代码”,这是一门虚幻引擎 C++ 基础类(class),在本类(class)中,您将开发一个小游戏,让用户尝试猜一个词。

代码运行良好。但我想补充一下。我创建了下面的代码并且效果很好。但它是 UGGGGLLLY。由于我仍处于早期学习阶段,我想开始养成正确的习惯。

所以问题是如何使所有这些 If 语句消失或压缩。 如果我想再添加 50 个单词,我不想再创建 50 个 if 语句。

我尝试将 ISecret 更改为 FString 并使用该数字从 HIDDEN_WORD[1] 获取数字,但它没有按计划工作。

这是我的想法:

ISecret[1-100] = MyHiddenWord[1-100] = HIDDEN_WORD[1-100]

我知道这行不通而且我知道我必须列出词库中的“词”,但我可以创建词库并只列出词库中的所有词吗?

    int32 ISecret;             //This section generates a 
    srand(time(NULL));        // random number between 1 and 10.
    ISecret = rand() % 10, 1;///

    const FString HIDDEN_WORD01 = "planet";
    const FString HIDDEN_WORD02 = "bait";
    const FString HIDDEN_WORD03 = "dog";
    const FString HIDDEN_WORD04 = "cat";
    const FString HIDDEN_WORD05 = "stream";///  These are the Hidden words
    const FString HIDDEN_WORD06 = "taco";
    const FString HIDDEN_WORD07 = "ship";
    const FString HIDDEN_WORD08 = "balcony";
    const FString HIDDEN_WORD09 = "tail";
    const FString HIDDEN_WORD10 = "barf";

         if (ISecret == 1){MyHiddenWord = HIDDEN_WORD01;}
    else if (ISecret == 2){MyHiddenWord = HIDDEN_WORD02;}
    else if (ISecret == 3){MyHiddenWord = HIDDEN_WORD03;}// These make is so
    else if (ISecret == 4){MyHiddenWord = HIDDEN_WORD04;}//what ever number 
    else if (ISecret == 5){MyHiddenWord = HIDDEN_WORD05;}//is randomly 
    else if (ISecret == 6){MyHiddenWord = HIDDEN_WORD06;}//generated that  
    else if (ISecret == 7){MyHiddenWord = HIDDEN_WORD07;}//the correct
    else if (ISecret == 8){MyHiddenWord = HIDDEN_WORD08;}//HIDDEN_WORD
    else if (ISecret == 9){MyHiddenWord = HIDDEN_WORD09;}//is chosen.  
    else if (ISecret == 10){MyHiddenWord = HIDDEN_WORD10;}

最佳答案

您可以将它们存储在 std::array 中:

#include<array>

const std::array<FString, 10> hidden_words =
{
    "planet",
    "bait",
    "dog",
    "cat",
    "stream",
    "taco",
    "ship",
    "balcony",
    "tail",
    "barf"
};

int main()
{
    int ISecret = 0;
    std::cout<<hidden_words[ISecret]<<std::endl;
}

或者一个std::vector<Fstring>

一般来说,如果您打算使用整数来区分每个元素,那么将元素存储在数组中会很有用。

关于c++ - 清理多个 if 语句 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41786618/

相关文章:

c++ - 如何为 Boost.PropertyTree 提供字符串而不是文件?

c++ - Rcpp:从全局环境调用 R 函数并在 C++ 代码中使用它

java - if else 语句之间的 float 在 3 以内?

java - 努力比较最后 2/3/4 个字符 Java (repl.it 018 - 条件语句练习 4)

c - 在 C 语言中无限猜谜游戏中记分

c++ - 嵌套模板特化是如何完成的 C++

c++ - Eclipse 和命令行参数中的引号?

python - 在 python 中的 __str__ 方法上调用 super()?

c# - Java 等价于 .NET 的 String.Format

c# - 在 C# 中将字符串存储为 UTF8