What exactly is a wide-character? I've tried to read explanation from other sources but I don't really understand what they are talking about. How is it different than a regualar char?
Also what does adding a L to a string (ex. L"blah") do?
wchar_t (wide character) is used to implement internationalization, because some character sets have more than 256 unique symbols, char isn't a large enough data type.
(So char* is no longer useful for strings, std::string<> isn't either, since it is a typedef for a basic_string instantiated on a char).
I can't help with the L. I seem to recall it in the Microsoft world.
L in front of a string literal means that it's a wide string literal. For example: wchar_t *s=L"Hello, World";
jsmith didn't know this? How uncharacteristic of him.
Note that wchar_t is not guaranteed to be of any size, so it could very well be the same size as char.
And 'char *' can be used to store encoded strings. UTF-8 is compatible with 7-bit ASCII and C strings (byte values 0x00-0x7F don't appear only as whole character, never as part of a multi-byte character).
OP you may want to check out the Unicode web site, they go into detail about the different UTF encodings there.
Normally in Windows you enclose your strings with the _T("hello") and with a compiler switch you can select if you want ANSI strings or wchar_t. Normally you would create your own string type based on TCHAR - not sure why MS didn't include 'tstring' in the first place (they got only string and wstring).
Do you realize you can declare one by just doing typedef std::string<TCHAR> tstring? And the last thing VC++ needs is even more non-standard stuff. The fact that it implicitly includes standard headers is bad enough.