Would std::basic_string<TCHAR> be preferable to std::wstring on Windows?
I believe the time when it was advisable to release non-unicode versions of your application (to support Win95, or to save a KB or two) is long past: nowadays the underlying Windows system you'll support are going to be unicode-based (so using char-based system interfaces will actually complicate the code by interposing a shim layer from the library) and it's doubtful whether you'd save any space at all. Go std::wstring
, young man!-)
I have done this on very large projects and it works great:
namespace std{#ifdef _UNICODE typedef wstring tstring;#else typedef string tstring;#endif}
You can use wstring everywhere instead though if you'd like, if you do not need to ever compile using a multi-byte character string. I don't think you need to ever support multi byte character strings though in any modern application.
Note: The std
namespace is supposed to be off limits, but I have not had any problems with the above method for several years.