22 Eylül 2017 Cuma

std::locale Sınıfı

Giriş
Şu satırı dahil ederiz.
#include <locale>
Kullanım
Locale nesnesi genellikle bir strema ile beraber kullanılır. Şöyle yaparız.
std::locale loc = ...;
std::istringstream ss = ...;
ss.imbue (loc);
Constructor - user environment
Açıklaması şöyle
The empty string tells setlocale to use the locale specified by the user in the environment.
Örnek
Şöyle yaparız.
std::locale l ("")
İsmi Windows'ta "Turkish_Turkey.1254"  olarak görünüyor.

Constructor - name
İmzası şöyle
explicit locale( const std::string& );
Örnek
Linux'ta Amerikan locale nesnesi için şöyle yaparız.
std::locale l ("en_US.UTF-8")
Constructor - locale + facet
İmzası şöyle
template< class Facet >
locale( const locale& other, Facet* f );
Açıklaması şöyle. Pointer olarak geçilen facet nesnesini silmek locale nesnesinin görevi.
Overload 7 is typically called with its second argument, f, obtained directly from a new-expression: the locale is responsible for calling the matching delete from its own destructor.
Örnek
Stream'e verilen byte'ları, facet ile belirtilen encoding kullanılarak dönüştürür. Şöyle yaparız.
class MyFacet: public std::codecvt<char,char,std::mbstate_t>
{
  ...
};
Şöyle yaparız.
std::locale l (std::locale::classic(), new MyFacet());
Örnek
Şöyle yaparız.
std::locale utf8_locale (std::locale(), new codecvt_utf8<wchar_t>());
Örnek
Şöyle yaparız.
std::locale loc = std::locale(std::locale::classic(),
  new boost::posix_time::time_input_facet("%d-%b-%Y"));
Copy Constructor
Şöyle yaparız.
std::locale l = std::locale("en_US.UTF-8");
classic metodu
"C" locale nesnesini döndürür. Şöyle yaparız.
const std::locale& l = std::locale::classic();
İsmi "C"'dir

name metodu
Şöyle yaparız
std::wcout << "User-preferred locale setting is " << std::locale("").name().c_str()

Hiç yorum yok:

Yorum Gönder