包含多个变量(c++)的字符串或函数
a string or function that includes multiple variables (c++)
我已经搜索了多个地方,并在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** nn**Triceps** nn**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"
}
有人知道怎么做吗?
(请解释你的答案,因为我可能不理解,我是noob)
您可以使用练习字符串的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
}
您可能要做的第一件事是在数组中测试所有相等的字符串,以及一个在数组中循环并检查是否相等的函数。
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"
}
我是这样做的:
#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** nn**Triceps** nn**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;
}
您只需使用一个选项列表,并使用if语句从中选择一个即可。一种选择是将不同的选择分配给这样的字符串数组;
string Body_Parts[3] = { "biceps", "triceps", "quads" };
并利用这个优势;
for(int i=0; i<3; i++) {
if(muscleChoice==Body_Parts[i])
cout<<"working"<<endl;
}
上面的代码会将int的muscleChoice与所有选项的数组进行比较,并在找到匹配项时打印出您想要的任何内容。
C++98解决方案:
string muscles[3] = { "biceps", "triceps", "quads" } ;
vector<string> vec(muscles, muscles+3);
set<string> muscles_set(vec.begin(), vec.end());
if ( muscles_set.count(muscleChoice) )
相关文章:
- 字符串函数在目标C++上运行时C++返回空
- 字符串函数返回奇怪的值
- 这里的字符串函数是什么意思
- 在字符串函数中抛出'char const*'实例后调用的终止
- 为什么 stl 字符串C++函数有时出错有时会出错?
- 从C++为字符串函数设置_ENV
- 来自 2D 数组的字符串函数
- 返回最长的公共子字符串函数 c ++
- 使用getline和字符串函数C++程序中的分段错误
- 在字符串函数的指针中返回地址
- 字符串函数:strcat()
- 这个子字符串函数有什么问题
- 字符串函数不返回字符串? C++
- 使用向量和字符串函数返回字符串
- 尝试修复一个字符串函数,该函数采用字符串并通过替换一些单词来更改它
- 逐字读取字符数组,无需字符串函数
- 我从我的字符串函数返回到主函数
- 为什么我不能从字符串函数返回字符串数组?
- 如何在不使用字符串函数的情况下在char数组中找到字符串?(C )
- 带有 #include< iostream.h> 的程序允许使用 strlen() 等字符串函数。为什么?