Знаете, что на самом деле вы написали тут?
if (word == disliked[0, 1])
Проверку на равенство с disliked[1]. Потому что запятая - это оператор для последовательного выполнения инструкций; в качестве результата берется последнее значение. У вас в квадратных скобках получилось две инструкции - 0 (который игнорируется, и о котором должен был выдать предупреждение компилятор) и 1, который и становится результатом...
А вот что вы хотели написать :) -
можно более кратко, с использованием std::find из <algorithm>:
while (cout << "Enter the word: ", cin >> word)
{
// Проверка, есть ли слово word в векторе
if (find(disliked.begin(), disliked.end(),word) != disliked.end())
cout << "BEEEP!!" << endl;
else
cout << "You entered " << word << endl;
}
Обратите внимание, что тут - while (cout << "Enter the word: ", cin >> word) - я использовал упомянутый оператор-запятую, чтоб просить ввести слово для каждого слова, а не один раз для всех вводимых слов.
Можно подробнее, чтоб вам было понятнее - просто проходим по элементам с помощью цикла:
while (cout << "Enter the word: ", cin >> word)
{
bool found = false; // Флаг, что слово найдено
for(size_t i = 0; i < disliked.size(); ++i) // Проход по всем словам
if (word == disliked[i]) // Если найдено
{
found = true; // выставляем флаг и
break; // покидаем цикл (дальше искать не смысла)
}
if (found) // Было найдено
cout << "BEEEP!!" << endl;
else
cout << "You entered " << word << endl;
}
О русских буквах - смотрите ответы на этот вопрос: Русский язык в консоли