Thanks for the reply. I changed my code so it looks like:

Code:
bool ci_equal(char ch1, char ch2)
	{
		return toupper((unsigned char)ch1) == toupper((unsigned char)ch2);
	}
	
	size_t ci_find(const string& str1, const string& str2)
	{
		string::const_iterator pos = search(str1.begin( ), str1.end( ), str2.begin( ), str2.end( ), ci_equal);
		if (pos == str1.end( ))
			return string::npos;
		else
			return pos - str1.begin( );
	}
Now I'm getting the error message:

error: no matching function for call to ‘search(__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, <unresolved overloaded function type>)’
/usr/lib/gcc/i386-redhat-linux/4.3.0/../../../../include/c++/4.3.0/bits/stl_algo.h:4123: note: candidates are: _FIter1 std::search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate) [with _FIter1 = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _FIter2 = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _BinaryPredicate = bool (webCrawler::*)(char, char)]