OK, this is peculiar, but
Code:
 ostream& operator << (ostream& strm, const char* s)
{
	static string tmpstr;
	tmpstr = s;
	strm << tmpstr;
	return strm;
}
solves the problem, so iostream doesn't, indeed, have this version of operator overloaded and that (printing const char *) worked because this was converted to std::string (this is only my guess).