21 Mayıs 2018 Pazartesi

std::wstring Sınıfı

Giriş
std::wstring wchar_t tipini kullanır. Bu tipin büyüklüğü Windows'ta 16 bit, Mac OS ta 32 bit tip.

Dolayısıyla  std::wstring portable kodlara sebep olmuyor. Açıklaması şöyle.
Do not use std::wstring if you care about portability (wchar_t is only 16 bits on Windows); use std::u32string instead (aka std::basic_string<char32_t>).
tchar - Windows
Windows'ta hem Unicode hem de MCBS çalışmak istersek tchar kullanmak gerekir. Şu satırı dahil ederiz.
#include <tchar.h>
Bu durumda TCHAR tipini kullanabiliriz.
TCHAR> c = ...
_T("...") macrosunu kullanabilir.
_T("MTS");
LPCTSTR yapısını kullanabiliriz.
LPCTSTR p = ...
Constructor
Windows'ta şöyle yaparız.
std::wstring str = L"MTS";
Windows'ta std::wstring ile std::basic_string<WCHAR> aynı şeydir. Şöyle yaparız.
std::basic_string<WCHAR> str = L"MTS";
Windows'ta tchar kullanmak istersek şöyle yaparız.
std::basic_string<TCHAR> str = _T("MTS");
c_str metodu
Windows'ta şöyle yaparız.
LPCWSTR b = str.c_str();
Windows'ta tchar kullanmak istersek şöyle yaparız.
LPCTSTR b = str.c_str();
Diğer - MultiByteToWideChar
Windows'ta şöyle yapabiliriz.
std::wstring A2T(const std::string& str)
{
  if (str.empty())
    return std::wstring();
  int sz = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, 0, 0);

  std::wstring res(sz - 1, 0);
  //                  ^^^ count to "remove" the NULL
  MultiByteToWideChar(CP_UTF8, 0, &str[0], str.size(), &res[0], res.size());
  //                                       ^^^ use actual sizes
  return res;
}


Hiç yorum yok:

Yorum Gönder