我在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"
}有人知道怎么做吗?
(请解释你的回答,因为我可能不明白,我是菜鸟)
发布于 2013-08-26 11:22:44
您可以使用练习字符串的std::set,然后检查输入字符串是否是该集合的成员:
std::set<std::string> exercises{"biceps", "triceps", "quads"};然后
if (exercises.find(muscleChoice) != exercises.end())
{
std::cout << "working";
}如果您想记录代表的数量,可以使用 :
std::map<std::string, unsigned int> exercises;
if (exercises.find(muscleChoice) != exercises.end())
{
std::cout << "working";
exercises[muscleChoice]++; // increase count for this muscle choice
}发布于 2013-08-26 11:24:32
您可能要做的第一件事是在数组中测试所有要测试的字符串是否相等,以及一个遍历数组并检查是否相等的函数。
string commands[] = { "bicep", "tricep", "quad" };然后检查等式:
bool testForEquality( string s ){
for( int i=0; i<3; i++ ){
if( s == commands[i] ) return true;
}
return false;
}至于用法:
cin >> muscleChoice;
if ( testForEquality(muscleChoice) )
{
cout << "working"
}发布于 2013-08-26 11:25:04
我就是这样做的:
#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;
}https://stackoverflow.com/questions/18442864
复制相似问题