News:

Accounts with zero posts and zero activity during the last months will be deleted periodically to fight SPAM!

Main Menu

STL strings and Unicode

Started by sethjackson, June 25, 2006, 08:07:47 PM

Previous topic - Next topic

sethjackson

If I am understanding correctly std::string is ANSI only, however STL comes to the rescue with std::wstring which is for Unicode only. Am I correct?

So is the code below correct? Then instead of using std::string, or std::wstring I could use String? I think I'm right, but I'm not sure......

Code (cpp) Select

#ifndef STRING_H
#define STRING_H

    #ifdef UNICODE

        #include <wstring>

        typedef std::wstring String;

    #else

        #include <string>

        typedef std::string String;

    #endif

#endif // STRING_H

TDragon

wstring is not a standard C++ header; as far as I know, std::wstring is defined in the <string> header. Other than that, I expect your code would work.

It may interest you to know that std::string and std::wstring are only typedefs of an underlying "basic_string" template:

typedef basic_string<char, char_traits<char>, allocator<char> > string;
typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring;


This would in essence allow you to make a string out of any data type (PODs are easiest).
[url="https://jmeubank.github.io/tdm-gcc/"]https://jmeubank.github.io/tdm-gcc/[/url] - TDM-GCC compiler suite for Windows (GCC 9.2.0 2020-03-08, 32/64-bit, no extra DLLs)

sethjackson

Quote from: TDragon on June 25, 2006, 10:24:34 PM
wstring is not a standard C++ header; as far as I know, std::wstring is defined in the <string> header. Other than that, I expect your code would work.

It may interest you to know that std::string and std::wstring are only typedefs of an underlying "basic_string" template:

typedef basic_string<char, char_traits<char>, allocator<char> > string;
typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring;


This would in essence allow you to make a string out of any data type (PODs are easiest).

Cool.  8) Thanks for the answer. :)