CUnicodeString is a replacement for CString. If you are one of these poor guys that has to write applications that use for example NetXxx functions and don't want to create a Unicode project, or use ANSI only functions from a unicode project or what ever, you always had to deal with MultiByteToWideChar and WideCharToMultibyte. Maybe you even have to play with native functions witch uses counted unicode strings (UNICODE_STRING) or LSA (LSAUNICODE_STRING). If you were in such situations and hated the fact that the MFC CString doesn't help you with these conversions, than you would love this little class...
CUnicodeString has all the functions that CString provides, so you can use it allmost everywhere where you use CString normaly. This class works internally only with Unicode strings. Every string assignment is converted to and stored as Unicode.
CUnicodeString cs; WCHAR wc = L"My Wide String"; cs = wc; CHAR ch = " needs a few ANSI chars to append"; cs += wc; cs += " "; LPSTR pstrMyText = cs; LPWSTR pstrMyUnicodeText = cs; cs.Empty(); cs = "MyUserName"; NetUserGetInfo(cs,....); ...This class was written for a upcomming C++ library called SecLIB witch covers the whole NT-Security. This is one of the reasons why it internally works in Unicode. BTW: Using System API's in Unicode is allways faster in NT, because NT internally works also with Unicode only... :)
I hope you like it! :)
(MCSD in progress....)