#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
int main(){
string Whitelist[4] = {"Stian", "Mathias", "Modaser"};
for (int x = 0; x < 3; x++){
cout << x + 1<< ". " << Whitelist[x] << endl;
if (Whitelist[x] == "Stian" && "Mathias" && "Modaser"){
cout << "" << Whitelist[x] << " is here" << endl;
}
else{ cout << "no one is here" << endl; }
}
cin.get();
return 0;
}
//所以是的,我只是试图循环我的数组,看看是否有任何这些名称。所以我想你几乎可以阅读代码所做的事情,因为大多数你都是专业人士:P。但是当我问我的朋友,他已经编写了1 - 2年的时间,他说我无法循环通过这样的数组并告诉我使用矢量。那是什么意思?我的代码有效吗?
答案 0 :(得分:0)
这组代码错误
if (Whitelist[x] == "Stian" && "Mathias" && "Modaser"){
cout << "" << Whitelist[x] << " is here" << endl;
}
为什么呢?因为假设if语句的第一个条件评估为true
,如下所示:
if (true && "Mathias" && "Modaser")
{
//...
}
然后代码没有意义。在if语句中,您必须单独检查每个条件,如下所示:
if (Whitelist[x] == "Stian" && Whitelist[x] =="Mathias" && Whitelist[x] =="Modaser"){
cout << "" << Whitelist[x] << " is here" << endl;
}
但是由于任何1个字符串不能同时是三个名字,这个条件会失败,(你使用&&
)。使用||
运算符修复代码,对于最终代码(同样,删除<< ""
,这只是多余的,不必要的):
if (Whitelist[x] == "Stian" || Whitelist[x] =="Mathias" || Whitelist[x] =="Modaser"){
cout << Whitelist[x] << " is here" << endl;
}
顺便说一句:作为建议,使用std::vector<std::string>
而不是原始数组,这样您就可以获得比数组更容易和更多的功能。
最后,您的阵列中还有4个元素,其中一个未使用。这可能是拼写错误,因此请将数组大小设为3
。
答案 1 :(得分:0)
像这样循环数组没有根本的错误。
我们只能猜出你朋友的意思,但我可以自己检查你的代码。
但是,你有四个数组元素,只有三个元素循环,这可能是一个错误;如果是的话,证明你最好不要使用迭代器,而不是硬编码你可能会出错的数字。
此外,您的if
条件错误:您的意思是||
(&#34;或&#34;),而不是&&
(&#34;和&#34; )?你必须完整地写出相邻的条件,所以:
if (Whitelist[x] == "Stian" || Whitelist[x] =="Mathias" || Whitelist[x] =="Modaser")
我不确定为什么你要比较所有这些值,当它们是阵列中唯一的值时。好吧,除了那个空的第四个元素;也许你正试图抓住那个。我们不知道,因为你没有告诉我们。您是否要在迭代某些其他数组时搜索Whitelist
?我们无从得知。也许这就是你的朋友真正的含义?再一次,我无法说出来。
将""
流式传输到std::cout
只需等待资源,而其他任何事情都没有。删除它。
最后,有些切线,it would be better not to block waiting for input as a means to keep your console window open。那不是你的计划的工作。