首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含多个变量(c++)的字符串或函数

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

Stack Overflow用户
提问于 2013-08-26 11:18:16
回答 5查看 158关注 0票数 0

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

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

我想要做的项目是记录你在健身房训练时做了多少次锻炼。

代码语言:javascript
复制
#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;
}

这基本上就是我想要的,而且效果很好。但很明显,如果我有更多的可能性,那就会变得很混乱。我想要的是这样的东西。(很明显,这个函数不会持续这么久,只是想更好地解释一下)

代码语言:javascript
复制
cin >> muscleChoice;

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

有人知道怎么做吗?

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-08-26 11:22:44

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

代码语言:javascript
复制
std::set<std::string> exercises{"biceps", "triceps", "quads"};

然后

代码语言:javascript
复制
if (exercises.find(muscleChoice) != exercises.end())
{
  std::cout << "working";
}

如果您想记录代表的数量,可以使用

代码语言:javascript
复制
std::map<std::string, unsigned int> exercises;

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

Stack Overflow用户

发布于 2013-08-26 11:24:32

您可能要做的第一件事是在数组中测试所有要测试的字符串是否相等,以及一个遍历数组并检查是否相等的函数。

代码语言:javascript
复制
string commands[] = { "bicep", "tricep", "quad" };

然后检查等式:

代码语言:javascript
复制
bool testForEquality( string s ){
   for( int i=0; i<3; i++ ){
      if( s == commands[i] ) return true;
   }

   return false;
}

至于用法:

代码语言:javascript
复制
cin >> muscleChoice;

if ( testForEquality(muscleChoice) )
{
    cout << "working"
}
票数 0
EN

Stack Overflow用户

发布于 2013-08-26 11:25:04

我就是这样做的:

代码语言:javascript
复制
#include <iostream>
#include <cstdlib>
#include <string>

#include <algorithm> // find function
#include <vector> // dynamic array to store choices

using namespace std;

int main()
{
    vector<string> accepted_choices;
    accepted_choices.push_back("biceps"); // add a choice
    accepted_choices.push_back("tricep");
    accepted_choices.push_back("quad");

    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 (find(accepted_choices.begin(), accepted_choices.end(), muscleChoice) != accepted_choices.end()) // find returns container.end() if it failed to find
    {
        cout << "working" << endl;
    }



    return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18442864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档