c++ - 包含多个变量的字符串或函数 (c++)

标签 c++ string function variables include

我为此搜索了多个地方,并在 youtube 上观看了整个“TheNewBoston”C++ 指南,但我还没有找到答案。

我正在编写一个程序来练习我的 C++ 技能,我仍然是一个菜鸟,但我认为这是可能的,我只是不知道该怎么做。

我正在尝试制作的程序是一个记录你在健身房训练时为特定运动做了多少次的程序。

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

int main()
{
    string biceps = "biceps";
    string triceps = "triceps";
    string quads = "quads";
    string muscleChoice;

    cout << "Welcome to MyPT!" << endl;
    cout << endl;
    cout <<  "What are you going to be training today?" << endl;
    cout << endl;
    cout << "**Biceps** \n\n**Triceps** \n\n**Quads**" << endl;
    cout << endl;
    cin >> muscleChoice;
    if ((muscleChoice == "biceps") || (muscleChoice == "triceps") || (muscleChoice == "quads"))
    {
        cout << "working" << endl;
    }



    return 0;
}

这基本上就是我想要的,而且行之有效。但很明显,如果我有更多的可能性,那可能会变得一团糟。我想要的是看起来像这样的东西。 (显然函数不会这么长,只是试图更好地解释它)

cin >> muscleChoice;

if (muscleChoice == oneFunctionThatIncludesAllThoseStrings)
{
    cout << "working"
}

有人知道怎么做吗?

(请解释你的答案,因为我可能不明白,我是菜鸟)

最佳答案

你可以使用 std::set练习字符串,然后检查输入字符串是否是该集合的成员:

std::set<std::string> exercises{"biceps", "triceps", "quads"};

然后

if (exercises.find(muscleChoice) != exercises.end())
{
  std::cout << "working";
}

如果您想统计代表次数,可以使用 std::map 相反:

std::map<std::string, unsigned int> exercises;

if (exercises.find(muscleChoice) != exercises.end())
{
  std::cout << "working";
  exercises[muscleChoice]++; // increase count for this muscle choice
}

关于c++ - 包含多个变量的字符串或函数 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18442864/

相关文章:

c++ - 字符串参数 const char* 和 const wchar_t*

c++ - 寻找一个 C++ GUI 库,您可以在其中设计精美的 GUI(例如游戏),

java - 保密字符串的值

c - 通过引用传递数组的两种不同方式。哪一个更正确?

c++ - 为另一个 dll 导出静态成员

python - Qt 调试崩溃/退出 python 并最终无法正确调试(例如,不在断点处停止)

c# - 从 C# 中的字符串调用函数

html - 如何找到所有以 "<tr"结尾的表达式(stringi 包)

c - C 中函数指针的数组。如何使用枚举从数组中选择我想要的元素?

javascript - 包装函数包围