C++ 检查用户输入是否等于数组元素
我有一个具有多个名称的字符串数组。 我想使用if语句检查用户输入是否等于任何名称 例如:C++ 检查用户输入是否等于数组元素,c++,C++,我有一个具有多个名称的字符串数组。 我想使用if语句检查用户输入是否等于任何名称 例如: names[5] = {'david','rares','tudor','john','jay'} cin>>name; 现在我想检查name是否等于数组中的任何元素 非常糟糕的例子: if(name == names) { cout<<"you can use this name. Name: "<<name; } if(name==names) { 正如用户4
names[5] = {'david','rares','tudor','john','jay'}
cin>>name;
现在我想检查name是否等于数组中的任何元素
非常糟糕的例子:
if(name == names)
{
cout<<"you can use this name. Name: "<<name;
}
if(name==names)
{
正如用户4581301所指出的,'david'
不是一个字符串,而是一个多字节字符(很可能也是无效的)。如果您想保留一组名称并检查其中是否存在某个名称,可以使用std::set
或std::无序集
而不是数组。例如:
#include <iostream>
#include <set>
#include <string>
int main() {
std::set<std::string> names = {"david", "rares", "tudor", "john", "jay"};
std::string name;
std::cin >> name;
if(names.count(name)) // or names.contains(name) in C++20
std::cout << "found\n";
else
std::cout << "not found\n";
}
#包括
#包括
#包括
int main(){
std::set name={“david”、“rares”、“tudor”、“john”、“jay”};
std::字符串名;
std::cin>>名称;
C++20中的if(names.count(name))//或names.contains(name)
std::cout您可以这样做:
#include <iostream>
#include <algorithm>
int main()
{
const char * v [] = { "david", "rares", "tudor", "john", "jay" };
std::string name;
std::cin >> name;
auto result = std::find (std::begin (v), std::end (v), name);
if (result != std::end (v))
std::cout << name << " is valid\n";
}
#包括
#include我建议使用一个向量来存储名称,以便您知道自己的大小。如果必须使用静态数组,请确保保存当前大小,并在删除/添加名称时进行更新
有些人可能有更有效的解决方案,但您可以使用for循环在数组中进行线性搜索
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name;
string names[5] = {"david","rares","tudor","john","jay"};
cout << "Enter name: ";
cin >> name;
for (int i = 0; i < 5; i++)
{
if(names[i] == name)
{
cout << name << " was found in the array." << endl;
return 0;
}
}
cout << name << " wasn't found in the array." << endl;
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
字符串名;
字符串名[5]={“大卫”、“稀有”、“都铎”、“约翰”、“杰伊”};
姓名;
对于(int i=0;i<5;i++)
{
如果(名称[i]==名称)
{
cout Hi!更简单的方法是对
循环使用,并检查每个元素:)'david'
是一个多字节字符,而不是字符串。编译器可能会就此向您发出警告。请改用“david”
。同时注意大小写。“david”
与“david”不匹配
对于在列表中查找一个值很有用。有没有不使用std的方法?当然,您可以使用std::cin,std::cout;
执行操作,然后如果您经常使用这些操作,则跳过std:
。您甚至可以使用整个命名空间std
,但这就是问题。