суббота, 3 января 2015 г.

Строковые типы в Windows, часть 2

Если мы работаем со строками STL в Windows и хотим быть независимыми от значения переменной _UNICODE (то есть писать код независимый от того работаем ли мы со строками UNICODE или нет), то тогда можно воспользоваться таким куском кода:
#ifdef _UNICODE
#define tstring wstring
#else
#define tstring string
#endif
Если воспользоваться фактом, что std::string и std::wstring являются typedef шаблона класса std::basic_string, то можно сделать так:
namespace std
{
 typedef basic_string<TCHAR> tstring; 
}

Наиболее общее решение выглядит так:

#include  <tchar.h>
#include  <string>
#include  <fstream>
#include  <sstream>
namespace std
{
typedef basic_string<TCHAR> tstring;
typedef basic_ostream<TCHAR> tostream;
typedef basic_istream<TCHAR> tistream;
typedef basic_iostream<TCHAR> tiostream;
typedef basic_ifstream<TCHAR> tifstream;
typedef basic_ofstream<TCHAR> tofstream;
typedef basic_fstream<TCHAR> tfstream;
typedef basic_stringstream<TCHAR> tstringstream;
}
Взято отсюда.

Комментариев нет: