2013-10-09 4 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»

Как я могу сделать цикл, который проверяет первый символ пользовательского ввода с первым символом кода, и видит, соответствует ли это?

, например:

строки кода 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; 
Смежные вопросы