Начну с примера. Есть ф-ция определения системной директории — простая обёртка над 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: