2013-10-09 69 views
0
string code[4] = {"G", "O", "B", "R"}; 
string colorPegs[6] = {"R", "B", "Y", "G", "O", "B"}; 
string userGuess; 

    getline(cin,userGuess); 

这些是我的问题中重要的代码行。使用字符串数组检查用户输入

用户将输入4个字母,例如“BBYG”

我怎样才能让一个for循环,检查用户输入的与代码的第一个字符的第一个字符,如果它匹配看到?

例如:

串码是GOBR

用户输入BBBR。在用户输入中,只有一个字母匹配代码,这是第三个B,如何使用for循环检查此代码?

+0

你到底想干什么?你想检查完整的比赛吗?或者统计匹配的字符数量?或找到第一场比赛的索引?你能编辑你的问题以提供更多信息吗? – simonc

+0

要检查第一个字母是否在数组中,您可以使用Array.contains。文档:http://msdn.microsoft.com/en-us/library/bb384015(v=vs.100).ASPXchar firstletter = userGuess [0]; – Stofkn

+0

前两行中的所有“字符串”只包含一个字符。考虑使用真实的角色来简化任务。 –

回答

0

试试这个:

#include <algorithm> 

int main() 
{ 
    std::string code{"GOBR"}; 
    std::string input; 

    std::cin >> input; 

    auto match = [&] (char c) 
    { 
     return std::find(code.begin(), code.end(), c) != code.end(); 
    }; 

    if (std::any_of(input.begin(), input.end(), match)) 
    { 
     // match 
    } 
} 
1

尝试使用此代码假设你想找到一个匹配,如果他们是在相同的位置:

for(int i = 0; i < code.length(); ++i) 
{ 
    if(code[i] == user[i]) return true; // Match found here. 
} 
return false;