I ran your code, Bench, but it doesn't do what gaggu82 asked for. It finds the search string even if it's embedded in another word, like "this is a string" prints "is is a string" instead of "is a string". Am I testing it the wrong way?
No, you're not

I think the original post was unclear to me (It makes more sense now - the thread starter could have done with more punctuation though - the question was bordering on cryptic as I read it)
in which case, i'd add this to the top
bool is_space_punct( std::string::const_iterator iter )
{
return isspace( *iter ) || ispunct( *iter ) ;
}
and use this for bounds checking (I don't think the STL can help much with this bit)
bool is_word = true;
if (iter != line_in.begin() ) //Don't check the beginning
is_word = is_space_punct( iter-1 );
if ( iter+match.size() != line_in.end() ) //Don't check the end
is_word = is_word && is_space_punct( iter+match.size() );
Now its fairly similar to yours, but with iterators rather than indices (I tend to find iterators are a bit more idiomatic for C++, probably because of the huge number of things you can do with the STL algorithms)