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.
Windows'ta hem Unicode hem de MCBS çalışmak istersek tchar kullanmak gerekir. Şu satırı dahil ederiz.
Windows'ta şöyle yaparız.
Windows'ta şöyle yaparız.
Windows'ta şöyle yapabiliriz.
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 = ...
ConstructorWindows'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 metoduWindows'ta şöyle yaparız.
LPCWSTR b = str.c_str();
Windows'ta tchar kullanmak istersek şöyle yaparız.LPCTSTR b = str.c_str();
Diğer - MultiByteToWideCharWindows'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