2013-10-09 101 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;