>>33がリッチなのはわかる。
でも、ただGetBuffer/ReleaseBufferが面倒なだけだったら、単純なユーティリティクラスでいいんじゃない?

class GR {
 CString str;
 size_t siz;
 LPTSTR p;
public:
 ~GR() {
  str.ReleaseBuffer();
 }
 GR(CString &str_, size_t size_) : str(str_), p(NULL), siz(0) {
  p = str.GetBuffer(size);
  siz = size_;
 }
 operator LPTSTR() { return p; }
 size_t size() const { return siz; }
};

多分こんな風に使えるはず。

CString s;
{ GR buf(s, 1000); GetCurrentDirectory(buf, buf.size()); }

思いつきで書いただけで、コンパイルもテストもしてないけど。