Aracılığıyla paylaş


locale Sınıfı

Kültüre özgü bilgileri depolayan bir yerel ayar nesnesini belirli bir yerelleştirilmiş ortamı toplu olarak kapsülleyen bir modeller kümesi olarak tanımlayan sınıf.

Sözdizimi

class locale;

Açıklamalar

Model, formun genel nesnesine sahip sınıf modelinden türetilmiş bir sınıfın nesnesine yönelik bir işaretçidir:

static locale::id id;

Bu modellerin açık uçlu bir kümesini tanımlayabilirsiniz. Ayrıca, modellerin rastgele bir sayısını gösteren bir yerel ayar nesnesi oluşturabilirsiniz.

Bu modellerin önceden tanımlanmış grupları, işlevi setlocaletarafından Standart C Kitaplığı'nda geleneksel olarak yönetilen yerel ayar kategorilerini temsil edilir.

Kategori collate (LC_COLLATE) modelleri içerir:

collate<char>
collate<wchar_t>

Kategori ctype (LC_CTYPE) modelleri içerir:

ctype<char>
ctype<wchar_t>
codecvt<char, char, mbstate_t>
codecvt<wchar_t, char, mbstate_t>
codecvt<char16_t, char, mbstate_t>
codecvt<char32_t, char, mbstate_t>

Kategori monetary (LC_MONETARY) modelleri içerir:

moneypunct<char, false>
moneypunct<wchar_t, false>
moneypunct<char, true>
moneypunct<wchar_t, true>
money_get<char, istreambuf_iterator<char>>
money_get<wchar_t, istreambuf_iterator<wchar_t>>
money_put<char, ostreambuf_iterator<char>>
money_put<wchar_t, ostreambuf_iterator<wchar_t>>

Kategori numeric (LC_NUMERIC) modelleri içerir:

num_get<char, istreambuf_iterator<char>>
num_get<wchar_t, istreambuf_iterator<wchar_t>>
num_put<char, ostreambuf_iterator<char>>
num_put<wchar_t, ostreambuf_iterator<wchar_t>>
numpunct<char>
numpunct<wchar_t>

Kategori time (LC_TIME) modelleri içerir:

time_get<char, istreambuf_iterator<char>>
time_get<wchar_t, istreambuf_iterator<wchar_t>>
time_put<char, ostreambuf_iterator<char>>
time_put<wchar_t, ostreambuf_iterator<wchar_t>>

Kategori messages (LC_MESSAGES) modelleri içerir:

messages<char>
messages<wchar_t>

(Son kategori POSIX için gereklidir, ancak C Standardı için gerekli değildir.)

Bu önceden tanımlanmış modellerden bazıları, sayısal değerlerin iostream metin dizilerine ve metin dizilerinden dönüştürülmelerini denetlemek için sınıflar tarafından kullanılır.

Sınıf yerel ayarının nesnesi de bir yerel ayar adını sınıf dizesinin nesnesi olarak depolar. Yerel ayar modeli veya yerel ayar nesnesi oluşturmak için geçersiz bir yerel ayar adı kullanıldığında sınıf runtime_error nesnesi oluşturulur. Depolanan yerel ayar adı, "*" yerel ayar nesnesinin C stili yerel ayarın nesne tarafından temsil edilene tam olarak karşılık geldiğinin emin olamıyor olmasıdır. Aksi takdirde, standart C Kitaplığı'nın içinde, bazı yerel ayar nesnesi locale_objectiçin adı().c_str()) çağırarak setlocale(LC_ALL , locale_object.eşleşen bir yerel ayar oluşturabilirsiniz.

Bu uygulamada, statik üye işlevini de çağırabilirsiniz:

static locale empty();

Böylece, modeli olmayan bir yerel bir nesne oluşturabilirsiniz. Ayrıca saydam bir yerel ayardır. Şablon has_facet ve use_facet istenen model saydam bir yerel ayarda bulamazsa, önce genel yerel ayara ve sonra saydamsa klasik yerel ayara başvurur. Bu nedenle şunları yazabilirsiniz:

cout.imbue(locale::empty());

sonraki cout eklemeler, genel yerel ayarın geçerli durumu tarafından aracılık edilir. Şunu da yazabilirsiniz:

locale loc(locale::empty(),
    locale::classic(),
    locale::numeric);

cout.imbue(loc);

Genel yerel ayar tarih ve parasal tutar eklemeye cout yönelik değişen kurallar sağladığından, izleyen eklemelerin C yerel ayarındakiyle aynı kalması için sayısal biçimlendirme kuralları.

Oluşturucular

Oluşturucu Açıklama
yerel ayar Bir yerel ayar veya yerel ayar kopyası ya da modelin veya kategorinin başka bir yerel ayardaki bir model veya kategori tarafından değiştirilen bir kopyasını oluşturur.

Tür tanımları

Tür adı Açıklama
category Standart model aileleri belirtmek için bit maskesi değerleri sağlayan bir tamsayı türü.

Üye işlevleri

Üye işlevi Açıklama
birleşmek Belirtilen yerel ayardaki bir modeli hedef yerel ayara ekler.
ad Depolanan yerel ayar adını döndürür.

Statik işlevler

Veri Akışı Adı Açıklama
Klasik Statik üye işlevini klasik C yerel ayarını temsil eden yerel bir nesneye döndürür.
genel Varsayılan programın yerel ayarını sıfırlar.

İşleçler

Operator Açıklama
operator= Bir yerel ayar atar.
operator!= İki yerel ayarın farklı olup olmadığını sınar.
operator( ) İki basic_string nesneyi karşılaştırır.
operator== İki yerel ayarın farksız olup olmadığını sınar.

Sınıflar

Sınıf Açıklama
facet Tüm yerel ayar modelleri için temel sınıf görevi gören sınıf.
id Üye sınıfı özellikleri, bir yerel ayardaki arama modelleri için bir dizin olarak kullanılan benzersiz bir kimlik sağlar.

Gereksinimler

Üst bilgi:<yerel ayar>

Ad alanı: std

locale::category

Standart model aileleri belirtmek için bit maskesi değerleri sağlayan bir tamsayı türü.

typedef int category;
static const int collate = LC_COLLATE;
static const int ctype = LC_CTYPE;
static const int monetary = LC_MONETARY;
static const int numeric = LC_NUMERIC;
static const int time = LC_TIME;
static const int messages = LC_MESSAGES;
static const int all = LC_ALL;
static const int none = 0;

Açıklamalar

türü, bit maskesi türündeki bir grup ayrı öğeyi sınıf yerel ayarına göre temsil eden veya ilgili C yerel ayarı kategorilerinden herhangi birini temsil etmek için kullanılabilen bir türün eş int anlamlısıdır. Öğeler şunlardır:

  • collate, C kategorisine karşılık gelen LC_COLLATE

  • ctype, C kategorisine karşılık gelen LC_CTYPE

  • monetary, C kategorisine karşılık gelen LC_MONETARY

  • numeric, C kategorisine karşılık gelen LC_NUMERIC

  • time, C kategorisine karşılık gelen LC_TIME

  • messages, POSIX kategorisine karşılık gelen LC_MESSAGES

İki yararlı değer daha şunlardır:

  • none, C kategorilerinden hiçbirine karşılık gelen

  • all, tüm kategorilerin C birleşimine karşılık LC_ALL

içinde olduğu gibi monetary | timebit düzeyinde OR kullanarak rastgele bir kategori grubunu bu sabitlerle temsil edebilirsiniz.

locale::classic

Statik üye işlevini klasik C yerel ayarını temsil eden yerel bir nesneye döndürür.

static const locale& classic();

Dönüş Değeri

C yerel ayarına başvuru.

Açıklamalar

Klasik C yerel ayarı, Standart C kitaplığındaki ABD İngilizcesi ASCII yerel ayarıdır. Uluslararası olmayan programlarda örtük olarak kullanılan yerel ayardır.

Örnek

// locale_classic.cpp
// compile with: /EHsc
#include <iostream>
#include <string>
#include <locale>

using namespace std;

int main( )
{
   locale loc1( "german" );
   locale loc2 = locale::global( loc1 );
   cout << "The name of the previous locale is: " << loc2.name( )
        << "." << endl;
   cout << "The name of the current locale is: " << loc1.name( )
        << "." << endl;

   if (loc2 == locale::classic( ) )
      cout << "The previous locale was classic." << endl;
   else
      cout << "The previous locale was not classic." << endl;

   if (loc1 == locale::classic( ) )
      cout << "The current locale is classic." << endl;
   else
      cout << "The current locale is not classic." << endl;
}
The name of the previous locale is: C.
The name of the current locale is: German_Germany.1252.
The previous locale was classic.
The current locale is not classic.

locale::combine

Belirtilen yerel ayardaki bir modeli hedef yerel ayara ekler.

template <class Facet>
locale combine(const locale& source_locale) const;

Parametreler

source_locale
Hedef yerel ayara eklenecek model içeren yerel ayar.

Dönüş Değeri

Üye işlevi, içinde öğesinin yerini alan veya source_locale listelenen modele *this Facet ekleyen bir yerel ayar nesnesi döndürür.

Örnek

// locale_combine.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <tchar.h>
using namespace std;

int main() {
   locale loc ( "German_germany" );
   _TCHAR * s1 = _T("Das ist wei\x00dfzz."); // \x00df is the German sharp-s; it comes before z in the German alphabet
   _TCHAR * s2 = _T("Das ist weizzz.");
   int result1 = use_facet<collate<_TCHAR> > ( loc ).
      compare (s1, &s1[_tcslen( s1 )-1 ],  s2, &s2[_tcslen( s2 )-1 ] );
   cout << isalpha (_T ( '\x00df' ), loc ) << result1 << endl;

   locale loc2 ( "C" );
   int result2 = use_facet<collate<_TCHAR> > ( loc2 ).
      compare (s1, &s1[_tcslen( s1 )-1 ],  s2, &s2[_tcslen( s2 )-1 ] );
   cout << isalpha (_T ( '\x00df' ), loc2 )  << result2 << endl;

   locale loc3 = loc2.combine<collate<_TCHAR> > (loc);
   int result3 = use_facet<collate<_TCHAR> > ( loc3 ).
      compare (s1, &s1[_tcslen( s1 )-1 ],  s2, &s2[_tcslen( s2 )-1 ] );
   cout << isalpha (_T ( '\x00df' ), loc3 ) << result3 << endl;
}

model sınıfı

Tüm yerel ayar modelleri için temel sınıf görevi gören sınıf.

class facet {
protected:
    explicit facet(size_t references = 0);
    virtual ~facet();
private:
    facet(const facet&) // not defined
    void operator=(const facet&) // not defined
};

Açıklamalar

sınıfının facetnesnesini kopyalayamaz veya atayamazsınız. Sınıfından locale::facet türetilen nesneleri oluşturabilir ve yok edebilirsiniz, ancak temel sınıfın nesneleri uygun değildir. Normalde, içinde olduğu gibi bir oluştururken öğesinden facet türetilen bir localenesne _Myfac oluşturursunuzlocale loc(locale::classic(), new _Myfac);

Bu gibi durumlarda, temel sınıfın facet oluşturucusunun sıfır başvuru bağımsız değişkeni olmalıdır. Nesne artık gerekli olmadığında silinir. Sıfır olmayan başvurular bağımsız değişkenini yalnızca nesnenin kullanım ömrü sorumluluğunu üstlendiğiniz nadir durumlarda sağlayın.

locale::global

Program için varsayılan yerel ayarı sıfırlar. Bu çağrı hem C hem de C++ için genel yerel ayarı etkiler.

static locale global(const locale& new_default_locale);

Parametreler

new_default_locale
Program tarafından varsayılan yerel ayar olarak kullanılacak yerel ayar.

Dönüş Değeri

Varsayılan yerel ayardan önceki yerel ayar sıfırlandı.

Açıklamalar

Program başlangıcında genel yerel ayar, klasik yerel ayar ile aynıdır. İşlev, global() Standart C kitaplığında eşleşen bir yerel ayar oluşturmak için çağırır setlocale( LC_ALL, loc.name. c_str()) .

Örnek

// locale_global.cpp
// compile by using: /EHsc
#include <locale>
#include <iostream>
#include <tchar.h>
using namespace std;

int main( )
{
   locale loc ( "German_germany" );
   locale loc1;
   cout << "The initial locale is: " << loc1.name( ) << endl;
   locale loc2 = locale::global ( loc );
   locale loc3;
   cout << "The current locale is: " << loc3.name( ) << endl;
   cout << "The previous locale was: " << loc2.name( ) << endl;
}
The initial locale is: C
The current locale is: German_Germany.1252
The previous locale was: C

id Sınıfı

Üye sınıfı özellikleri, bir yerel ayardaki arama modelleri için bir dizin olarak kullanılan benzersiz bir kimlik sağlar.

class id
{
   protected:    id();
   private:      id(const id&)
   void operator=(const id&)  // not defined
};

Açıklamalar

Üye sınıfı, her benzersiz yerel ayar modeli için gereken statik üye nesnesini açıklar. sınıfının idnesnesini kopyalayamaz veya atayamazsınız.

locale::locale

Bir yerel ayar veya yerel ayar kopyası ya da modelin veya kategorinin başka bir yerel ayardaki bir model veya kategori tarafından değiştirilen bir kopyasını oluşturur. Ayrıca bir yıkıcı da içerir.

locale();

explicit locale(const char* locale_name, category new_category = all);
explicit locale(const string& locale_name);
locale(const locale& from_locale);
locale(const locale& from_locale, const locale& Other, category new_category);
locale(const locale& from_locale, const char* locale_name, category new_category);

template <class Facet>
locale(const locale& from_locale, const Facet* new_facet);

~locale();

Parametreler

locale_name
Yerel ayarın adı.

from_locale
Yeni yerel ayarı oluştururken kopyalanacak bir yerel ayar.

Diğer
Kategorinin seçildiği yerel ayar.

new_category
Oluşturulacak kategori yerel ayarıyla değiştirilecek.

new_facet
Model, oluşturulmuş yerel ayara değiştirilecek.

Açıklamalar

İlk oluşturucu, nesneyi genel yerel ayarla eşleşecek şekilde başlatır. İkinci ve üçüncü oluşturucular, locale_name yerel ayar adıyla tutarlı davranışlara sahip olmak için tüm yerel ayar kategorilerini başlatır. Kalan oluşturucular from_locale kopyalar ve özel durumlar dikkate alınır:

locale(const locale& from_locale, const locale& Other, category new_category);

, C & new_category sıfır olmayan C kategorisine karşılık gelen Diğer modellerinden değiştirir.

locale(const locale& from_locale, const char* locale_name, category new_category);

locale(const locale& from_locale, const string& locale_name, category new_category);

, sıfır olmayan bir kategori replace_category replace_category & new_category karşılık gelen modellerden locale(locale_name, all) değiştirir.

template<class Facet> locale(const locale& from_locale, Facet* new_facet);

new_facet null işaretçi değilse model new_facet from_locale içinde değiştirir (veya ekler).

Yerel ayar adı locale_name null bir işaretçiyse veya başka bir şekilde geçersizse, işlev runtime_error oluşturur.

Örnek

// locale_locale.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <tchar.h>
using namespace std;

int main( ) {

   // Second constructor
   locale loc ( "German_germany" );
   _TCHAR * s1 = _T("Das ist wei\x00dfzz."); // \x00df is the German sharp-s, it comes before z in the German alphabet
   _TCHAR * s2 = _T("Das ist weizzz.");
   int result1 = use_facet<collate<_TCHAR> > ( loc ).
      compare (s1, &s1[_tcslen( s1 )-1 ],  s2, &s2[_tcslen( s2 )-1 ] );
   cout << isalpha (_T ( '\x00df' ), loc ) << result1 << endl;

   // The first (default) constructor
   locale loc2;
   int result2 = use_facet<collate<_TCHAR> > ( loc2 ).
      compare (s1, &s1[_tcslen( s1 )-1 ],  s2, &s2[_tcslen( s2 )-1 ] );
   cout << isalpha (_T ( '\x00df' ), loc2 )  << result2 << endl;

   // Third constructor
   locale loc3 (loc2,loc, _M_COLLATE );
   int result3 = use_facet<collate<_TCHAR> > ( loc3 ).
      compare (s1, &s1[_tcslen( s1 )-1 ],  s2, &s2[_tcslen( s2 )-1 ] );
   cout << isalpha (_T ( '\x00df' ), loc3 ) << result3 << endl;

   // Fourth constructor
   locale loc4 (loc2, "German_Germany", _M_COLLATE );
   int result4 = use_facet<collate<_TCHAR> > ( loc4 ).
      compare (s1, &s1[_tcslen( s1 )-1 ],  s2, &s2[_tcslen( s2 )-1 ] );
   cout << isalpha (_T ( '\x00df' ), loc4 ) << result4 << endl;
}

locale::name

Depolanan yerel ayar adını döndürür.

string name() const;

Dönüş Değeri

Yerel ayarın adını veren bir dize.

Örnek

// locale_name.cpp
// compile with: /EHsc
#include <iostream>
#include <string>
#include <locale>

using namespace std;

int main( )
{
   locale loc1( "german" );
   locale loc2 = locale::global( loc1 );
   cout << "The name of the previous locale is: "
        << loc2.name( ) << "." << endl;
   cout << "The name of the current locale is: "
        << loc1.name( ) << "." << endl;
}
The name of the previous locale is: C.
The name of the current locale is: German_Germany.1252.

locale::operator=

Bir yerel ayar atar.

const locale& operator=(const locale& other) noexcept;

locale::operator!=

İki yerel ayarın farklı olup olmadığını sınar.

bool operator!=(const locale& right) const;

Parametreler

Sağ
Eşitsizlik için test edilecek yerel ayarlardan biri.

Dönüş Değeri

Yerel ayarlar aynı yerel ayarın kopyaları değilse boole değeridir true . Bu, false yerel ayarların aynı yerel ayarın kopyaları olmasıdır.

Açıklamalar

İki yerel ayar, aynı yerel ayarsa, biri diğerinin kopyasıysa veya aynı adlara sahipse eşittir.

Örnek

// locale_op_ne.cpp
// compile with: /EHsc
#include <iostream>
#include <string>
#include <locale>

using namespace std;

int main( )
{
   locale loc1( "German_Germany" );
   locale loc2( "German_Germany" );
   locale loc3( "English" );

   if ( loc1 != loc2 )
      cout << "locales loc1 (" << loc1.name( )
      << ") and\n loc2 (" << loc2.name( ) << ") are not equal." << endl;
   else
      cout << "locales loc1 (" << loc1.name( )
      << ") and\n loc2 (" << loc2.name( ) << ") are equal." << endl;

   if ( loc1 != loc3 )
      cout << "locales loc1 (" << loc1.name( )
      << ") and\n loc3 (" << loc3.name( ) << ") are not equal." << endl;
   else
      cout << "locales loc1 (" << loc1.name( )
      << ") and\n loc3 (" << loc3.name( ) << ") are equal." << endl;
}
locales loc1 (German_Germany.1252) and
loc2 (German_Germany.1252) are equal.
locales loc1 (German_Germany.1252) and
loc3 (English_United States.1252) are not equal.

locale::operator()

Bu yerel ayarın std::collate<charT> modelinde tanımlanan sözcük temelli karşılaştırma kurallarına göre iki basic_string nesneyi karşılaştırır.

template <class CharType, class Traits, class Allocator>
bool operator()(
    const basic_string<CharType, Traits, Allocator>& left,
    const basic_string<CharType, Traits, Allocator>& right) const;

Parametreler

Sol
Karşılaştırılacak ilk dize.

Sağ
Karşılaştırılacak ikinci dize.

Dönüş Değeri

  • truesol sözcük temelli olarak sağdan küçükse, aksi takdirde false.

Açıklamalar

Üye işlevi etkili bir şekilde yürütülür:

const collate<CharType>& fac = use_fac<collate<CharType>>(*this);

return (fac.compare(left.begin(), left.end(), right.begin(), right.end()) < 0);

Bu, bir yerel ayar nesnesini işlev nesnesi olarak kullanabileceğiniz anlamına gelir.

Örnek

// locale_op_compare.cpp
// compile with: /EHsc
#include <iostream>
#include <string>
#include <locale>

int main( )
{
   using namespace std;
   const wchar_t *sa = L"ztesting";
   const wchar_t *sb = L"\0x00DFtesting";
   basic_string<wchar_t> a( sa );
   basic_string<wchar_t> b( sb );

   locale loc( "German_Germany" );
   cout << loc( a,b ) << endl;

   const collate<wchar_t>& fac = use_facet<collate<wchar_t> >( loc );
   cout << ( fac.compare( sa, sa + a.length( ),
       sb, sb + b.length( ) ) < 0) << endl;
}
0
0

locale::operator==

İki yerel ayarın farksız olup olmadığını sınar.

bool operator==(const locale& right) const;

Parametreler

Sağ
Eşitlik için test edilecek yerel ayarlardan biri.

Dönüş Değeri

Yerel ayarlar aynı yerel ayarın kopyalarıysa boole değeridir true . Yerel false ayarlar aynı yerel ayarın kopyaları değilse.

Açıklamalar

İki yerel ayar, aynı yerel ayarsa, biri diğerinin kopyasıysa veya aynı adlara sahipse eşittir.

Örnek

// locale_op_eq.cpp
// compile with: /EHsc
#include <iostream>
#include <string>
#include <locale>

using namespace std;

int main( )
{
   locale loc1( "German_Germany" );
   locale loc2( "German_Germany" );
   locale loc3( "English" );

   if ( loc1 == loc2 )
      cout << "locales loc1 (" << loc1.name( )
      << ")\n and loc2 (" << loc2.name( ) << ") are equal."
      << endl;
   else
      cout << "locales loc1 (" << loc1.name( )
      << ")\n and loc2 (" << loc2.name( ) << ") are not equal."
      << endl;

   if ( loc1 == loc3 )
      cout << "locales loc1 (" << loc1.name( )
      << ")\n and loc3 (" << loc3.name( ) << ") are equal."
      << endl;
   else
      cout << "locales loc1 (" << loc1.name( )
      << ")\n and loc3 (" << loc3.name( ) << ") are not equal."
      << endl;
}
locales loc1 (German_Germany.1252)
and loc2 (German_Germany.1252) are equal.
locales loc1 (German_Germany.1252)
and loc3 (English_United States.1252) are not equal.

Ayrıca bkz.

<yerel ayar>
Kod Sayfaları
Yerel Ayar Adları, Diller ve Ülke/Bölge Dizeleri
C++ Standart Kitaplığında İş Parçacığı Güvenliği