2013-09-11 2 views
1

, если у меня есть:C++ сравнивая строку с массивом строк

const string food[] = {"Burgers", "3", "Fries", "Milkshake"} 
string word; 
cin >> word; 

Как я могу сравнить слово с правильной едой? или, вернее, если пользователь вводит «Fries», как я могу сравнить это с массивом строк?

+0

Это правильно. Если пользователь входит в «Fries», я пытаюсь выяснить, как я могу сравнить пищу [] со словом –

+2

Массив кажется неправильной структурой. Я бы сохранил данные на 'std :: map', чтобы воспользоваться функциональными возможностями поиска. – andre

+3

@andre: 'std :: set' кажется более подходящим. –

ответ

7

С find:

#include <algorithm> 
#include <iterator> 

auto it = std::find(std::begin(food), std::end(food), word); 

if (it != std::end(food)) 
{ 
    // found *it 
} 
else 
{ 
    // not found 
} 
3

С алгоритмом find из <algorithm>:

auto found = std::find(std::begin(food), std::end(food), word); 
if (found == std::end(food)) { 
    // not found 
} else { 
    // found points to the array element 
} 

или с петлей:

for (const auto &item : food) { 
    if (item == word) { 
     // found it 
    } 
} 

хотя, если вам нужно сделать, это много , возможно, лучше сохранить элементы в структуре данных ure предназначен для быстрого поиска: std::set или std::unordered_set.

Смежные вопросы