News:

When registered with our forums, feel free to send a "here I am" post here to differ human beings from SPAM bots.

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. :)