スレ勃てるまでもないスレでシカトされてしまったんでこっち来ました。
思いつきでこんなクラス書いてみました。

class CLocalTime
{
private:
  char buf[32];
  SYSTEMTIME SysTime;
public:
  CLocalTime()
  {
  }
  operator char *();
};

CLocalTime::operator char *()
{
  GetLocalTime(&SysTime);
  sprintf_s(buf, 31, "%04d/%02d/%02d %02d:%02d:%02d",
            SysTime.wYear, SysTime.wMonth, SysTime.wDay,
            SysTime.wHour, SysTime.wMinute, SysTime.wSecond);
  buf[31] = '\0';
  return buf;
}

これで、例えば printf なんかで使うときに、
printf("通過![%s]\n", (char *)CLocalTime());
ときちんとキャストすればちゃんと表示されるんですが、
printf("通過![%s]\n", CLocalTime());
だけで表示させるにはどうすればいいんでしょうか。operator CLocalTime &() を
追加してみましたがダメでした。CAtlStringA なんかは後者できちんと表示されています。