Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果字符串在数组中,请执行此操作? 我对C++是相当新的,所以请原谅我这是一个愚蠢的问题,但是我已经搜索过了,我只发现了关于 STD::查找< /COD>这似乎不做我想要的(也许我没有正确使用它)。_C++_Arrays_String_If Statement - Fatal编程技术网

如果字符串在数组中,请执行此操作? 我对C++是相当新的,所以请原谅我这是一个愚蠢的问题,但是我已经搜索过了,我只发现了关于 STD::查找< /COD>这似乎不做我想要的(也许我没有正确使用它)。

如果字符串在数组中,请执行此操作? 我对C++是相当新的,所以请原谅我这是一个愚蠢的问题,但是我已经搜索过了,我只发现了关于 STD::查找< /COD>这似乎不做我想要的(也许我没有正确使用它)。,c++,arrays,string,if-statement,C++,Arrays,String,If Statement,例如,假设我有一个基本程序,可以存储你的性别。我有一个if语句,它只检查用户是否输入了“male”或“male”,然后执行我希望它执行的任何操作: if(gender == "male" || gender == "Male"){ // Do stuff } 我想扩展它,这样用户也可以输入“m”或“m”,它将被检测为男性。但是,我认为if语句有点混乱,因此我考虑将选项粘贴到一个简单数组中,并执行以下操作: if(gender is in maleArray){ // Do st

例如,假设我有一个基本程序,可以存储你的性别。我有一个if语句,它只检查用户是否输入了“male”或“male”,然后执行我希望它执行的任何操作:

if(gender == "male" || gender == "Male"){
    // Do stuff
}
我想扩展它,这样用户也可以输入“m”或“m”,它将被检测为男性。但是,我认为if语句有点混乱,因此我考虑将选项粘贴到一个简单数组中,并执行以下操作:

if(gender is in maleArray){
    // Do stuff
}
这可能吗?我不太在意任何不良实践,因为这是一个学习场景,尽管任何(有用的)批评或选择都是值得赞赏的,例如


提前谢谢,希望我说得够清楚。

如果您关心的是If语句的混乱,您可以使用一个返回布尔值的方法isMale()。然后你可以像(isMale(gender))一样使用它


如果您不关心大小写,可以将性别字符串转换为所有小写,然后与“male”和“m”进行比较。

如果您关心的是If语句的混乱,可以使用返回布尔值的方法isMale()。然后你可以像(isMale(gender))一样使用它


如果您不关心大小写,您可以将性别字符串转换为所有小大小写,然后与“男性”和“m”进行比较。

您要求的解决方案是:

std::array<std::string, 4> male_synonyms = {"Male", "male", "M", "m"};
auto it = std::find(male_synonyms.begin(), male_synonyms.end(), gender);
if (it != male_synonyms.end()) {
  // ...
}

这将接受不区分大小写的
m
male
。因此,
MalE
M
MalE
等也都是正确的。

您要求的解决方案是:

std::array<std::string, 4> male_synonyms = {"Male", "male", "M", "m"};
auto it = std::find(male_synonyms.begin(), male_synonyms.end(), gender);
if (it != male_synonyms.end()) {
  // ...
}


这将接受不区分大小写的
m
male
。所以
MalE
M
MalE
,等等都是正确的。

std::find
会做你想做的事。你能举个例子作为答案吗?我似乎不能理解它是一个IF条件。所以<代码> STD::String::查找< <代码>性别>代码>小写,也可以考虑比较,这样你就不会有多余的情况了,比如<代码>男性< /代码>,<代码>男性< /代码>,<代码>男性< /代码>等。(除上述内容外)<代码> > STD::查找< /COD>会做你想做的事。你能把一个例子作为答案吗?我不能把它当作一个IF条件来理解。所以<代码> STD::String::查找< /COD>。你应该考虑强迫<代码>性别>代码>小写,也可以考虑比较,这样你就不会有多余的情况了,比如<代码>男性< /代码>,<代码>男性< /c。ode>,
男性
,等等@crush我该怎么做(除了上述内容)?我如何强制它小写?有多种方法强制它小写,但这可能是最好的一种:我如何强制它小写?有多种方法强制它小写,但这可能是最好的一种:向量很好,因为它们动态扩展/收缩。但你必须小心,因为它们可以做很多事情根据我的理解,重新分配内存。您可能需要
static\u cast(std::lower)
来编译第二个代码段(如果还可以看到来自的
tolower
重载)向量很好,因为它们是动态扩展/收缩的。但你必须小心,因为据我所知,它们可以对内存进行大量的重新分配。你可能需要
static\u cast(std::lower)
来编译第二个代码段(如果还可以看到来自的
tolower
重载)
std::transform(gender.begin(), gender.end(), gender.begin(), std::tolower);
if (gender == "m" || gender == "male") {
  // ...
}