Using std::string instead of C-style strings would drastically simplify your function.
As it stands, you are mixing C-style strings with chars.
1 2 3 4 5 6
// Assuming the array size is fixed at compile time (such as your example)
template< size_t N >
bool in_array( const std::string& needle, std::string (&haystack)[ N ] )
{
return std::find( haystack, haystack + N, needle ) != haystack + N;
}