在过去的几个月里,我仍然在缓慢但坚定地艰难地学习 C++,并且遇到了我一直想弄清楚的障碍。我尝试过询问/阅读/搜索,但我永远找不到合适的答案。也许只是因为这个问题有点难问。
我想做的是在程序结束时,让结束序列将输入值与数组中的值进行比较。我必须循环比较序列吗?有没有更简单的方法来解决这个问题?
#include <iostream>
#include <string>
using namespace std;
int main () {
string YesAnswers[5] = {"Y", "YES", "yes" "y"};
string Name;
string YN;
do {
cout << "Enter your name: ";
getline(cin, Name);
cout << "Your name is "<< Name;
cout <<"\nIs this correct? Y\N: ";
cin >> YN;
} while(YN == YesAnswers);
system("Pause");
return 0;
}
最佳答案
您可以使用std::find()
来自<algorithm>
:
while (std::find(YesAnswers, YesAnswers + 4, YN) != YesAnswers + 4);
或者,如果你要创建 YesAnswers
一个vector
或其他一些容器而不是数组:
std::vector<std::string> YesAnswers;
while (std::find(YesAnswers.begin(), YesAnswers.end(), YN) != YesAnswers.end());
std::find()
查找范围内的元素;如果找到该元素,则返回指向找到的元素的迭代器(如果是数组,则返回指针);如果没有找到该元素,它将返回一个指向范围末尾的迭代器(或指针)。
请注意,与大多数(所有?)标准库算法一样,范围在开始时是封闭的,但在结尾时是开放的。也就是说,“结束”迭代器/指针应该指向最后一个元素。
关于c++ - 将 C++ 输入与数组值进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2838199/