Начну с примера. Есть ф-ция определения системной директории — простая обёртка над Win32 API ф-цией GetSystemDirectory:
CString GetSystemDirectory() {
   TCHAR szDir[MAX_PATH] = {0}; szDir[MAX_PATH-1] = 0;
   UINT uiRes = ::GetSystemDirectory(szDir, MAX_PATH);
   return uiRes ? szDir : NULL;
}   

    Лично я привык пользоваться такими wrapper'ами. Одно плохо — привязка к библиотеке MFC или WTL/ATL. Т.е. этот код нельзя использовать если пишешь, например, только на 'чистом' Win32 API. Конечно, можно переписать эту ф-цию на аналогичную, используюя вместо CString прочие реализации строк — std::string или CAtlString. Но зачем?

    Вот для таких случаев и предусмотрен мой класс CStingKS. Это тоже просто обёртка над строкой из стандартной Си'шной библиотеки. Реализация его выполнена только в одном .h файле который можно выкачать здесь. При использовании MFC или ATL/WTL, CString и CStringKS - это 2 разных класса, а при использовании только Win32 API - это один и тот же класс CStringKS.

    Чесно говоря, пользуйтесь строковыми классами из стандартных библиотек, они, это однозначно, гораздо лучше отлажены.
    Если не устраивает моя обёртка над std::string из стандартной библиотеки, то есть ещё альтернативы реализации класса CString:

  • если установлена WTL, то реализация CString есть в <atlmisc.h>
  • если установлена ATL от 7 студии и выше, то реализация CString есть в <atlstr.h>


  • Hosted by uCoz