Aracılığıyla paylaş


num_get Sınıfı

Tür CharType dizilerinin sayısal değerlere dönüştürülmelerini denetlemek için yerel ayar model olarak görev yapabilecek bir nesneyi açıklayan bir sınıf şablonu.

Sözdizimi

template <class CharType, class InputIterator = istreambuf_iterator<CharType>>
class num_get : public locale::facet;

Parametreler

CharType
Bir program içindeki yerel ayarın karakterlerini kodlamak için kullanılan tür.

InputIterator
Sayısal alma işlevlerinin kendi girişlerini okuyacağı yineleyicinin türü.

Açıklamalar

Herhangi bir yerel ayar modelinde olduğu gibi, statik nesne kimliğinde depolanmış bir başlangıç sıfır değeri bulunur. Depolanan değerine erişmeye yönelik ilk deneme, kimlikte benzersiz bir pozitif değer depolar.

Oluşturucular

Oluşturucu Açıklama
num_get Dizilerden sayısal değerleri ayıklamak için kullanılan türdeki num_get nesneler için oluşturucu.

Tür tanımları

Tür adı Açıklama
char_type Bir yerel ayar tarafından kullanılan bir karakteri tanımlamak için kullanılan tür.
iter_type Bir giriş yineleyiciyi açıklayan tür.

Üye işlevleri

Üye işlevi Açıklama
do_get Bir karakter dizisinden sayısal veya Boolean değeri ayıklamak için çağrılan sanal işlev.
get Bir karakter dizisinden sayısal veya Boolean değeri ayıklar.

Gereksinimler

Üst bilgi:<yerel ayar>

Ad alanı: std

num_get::char_type

Bir yerel ayar tarafından kullanılan bir karakteri tanımlamak için kullanılan tür.

typedef CharType char_type;

Açıklamalar

Türü, CharType şablon parametresinin eş anlamlısıdır.

num_get::d o_get

Bir karakter dizisinden sayısal veya Boolean değeri ayıklamak için çağrılan sanal işlev.

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    long& val) const;

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    unsigned short& val) const;

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    unsigned int& val) const;

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    unsigned long& val) const;

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    long long& val) const;

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    unsigned long long& val) const;

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    float& val) const;

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    double& val) const;

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    long double& val) const;

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    void *& val) const;

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    bool& val) const;

Parametreler

birinci
Sayının okunduğu karakter aralığının başlangıcı.

son
Sayıyı okuyacak karakter aralığının sonu.

iosbase
Bayrakları dönüştürme tarafından kullanılan ios_base .

state
Hata durumunda failbitin eklendiği durum (bkz . ios_base::iostate).

Val
Okunan değer.

Dönüş Değeri

Değer okunduktan sonra yineleyici.

Açıklamalar

İlk sanal korumalı üye işlevi,

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    long& val) const;

, tam ve boş bir tamsayı giriş alanını tanıyana kadar dizide [first, last) ilk başta başlayan sıralı öğelerle eşleşir. Başarılı olursa, bu alanı türü longolarak eşdeğer değerine dönüştürür ve sonucu val olarak depolar. Sayısal giriş alanının ötesindeki ilk öğeyi gösteren bir yineleyici döndürür. Aksi takdirde işlev hiçbir şeyi val içinde depolar ve içinde stateayarlarios_base::failbit. Geçerli bir tamsayı giriş alanının herhangi bir ön ekinin ötesinde ilk öğeyi gösteren bir yineleyici döndürür. Her iki durumda da, dönüş değeri eşitse lastişlevi içinde stateayarlanırios_base::eofbit.

Tamsayı giriş alanı, tarama işlevleri tarafından dosyadan bir dizi char öğeyi eşleştirmek ve dönüştürmek için kullanılan kurallarla dönüştürülür. (Bu tür char öğelerin her birinin, basit, bire bir eşleme ile eşdeğer Elem bir öğeyle eşlendiği varsayılır.) Eşdeğer tarama dönüştürme belirtimi aşağıdaki gibi belirlenir:

ios_base::flags() & ios_base::basefield == ios_base::eki iseiosbase., dönüştürme belirtimi olur.lo

Onaltılık iseiosbase.flags() & ios_base::basefield == ios_base::, dönüştürme belirtimi şeklindedirlx.

ise iosbase.flags() & ios_base::basefield == 0, dönüştürme belirtimi şeklindedir li.

Aksi takdirde, dönüştürme belirtimi şeklindedir ld.

Tamsayı giriş alanının biçimi, numpunct ios_base::getloc()) çağrısı tarafından döndürülen yerelfac ayar use_facet <tarafından belirlenir.<Elem>(iosbase. Özellikle:

fac.numpunct::grouping() , basamakların herhangi bir ondalık noktasının solunda nasıl gruplandırileceğini belirler

fac.numpunct::thousands_sep() herhangi bir ondalık noktasının solundaki basamak gruplarını ayıran sırayı belirler.

Sayısal giriş alanında örneği fac.thousands_sep() yoksa gruplandırma kısıtlaması uygulanmaz. Aksi takdirde, tarafından fac.grouping() uygulanan tüm gruplandırma kısıtlamaları uygulanır ve tarama dönüştürmesi gerçekleşmeden önce ayırıcılar kaldırılır.

Dördüncü sanal korumalı üye işlevi:

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    unsigned long& val) const;

, dönüştürme belirtimini ld ile ludeğiştirmesi dışında ilkiyle aynı şekilde davranır. Başarılı olursa, sayısal giriş alanını türünde unsigned long bir değere dönüştürür ve bu değeri val cinsinden depolar.

Beşinci sanal korumalı üye işlevi:

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    long long& val) const;

, dönüştürme belirtimini ld ile llddeğiştirmesi dışında ilkiyle aynı şekilde davranır. Başarılı olursa, sayısal giriş alanını türünde long long bir değere dönüştürür ve bu değeri val cinsinden depolar.

Altıncı sanal korumalı üye işlevi:

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    unsigned long long& val) const;

, dönüştürme belirtimini ld ile lludeğiştirmesi dışında ilkiyle aynı şekilde davranır. Başarılı olursa, sayısal giriş alanını türünde unsigned long long bir değere dönüştürür ve bu değeri val cinsinden depolar.

Yedinci sanal korumalı üye işlevi:

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    float& val) const;

, tam ve boş bir kayan nokta giriş alanıyla eşleşmeye çalışmaması dışında ilk ile aynı şekilde davranır. fac.numpunct::d ecimal_point() , tamsayı basamaklarını kesir basamaklarından ayıran sırayı belirler. Eşdeğer tarama dönüştürme tanımlayıcısı şeklindedir lf.

Sekizinci sanal korumalı üye işlevi:

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    double& val) const;

, tam ve boş bir kayan nokta giriş alanıyla eşleşmeye çalışmaması dışında ilk ile aynı şekilde davranır. fac.numpunct::d ecimal_point() , tamsayı basamaklarını kesir basamaklarından ayıran sırayı belirler. Eşdeğer tarama dönüştürme tanımlayıcısı şeklindedir lf.

Dokuzuncu sanal korumalı üye işlevi:

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    long double& val) const;

, eşdeğer tarama dönüştürme tanımlayıcısının Lfolması dışında sekizinci ile aynı şekilde davranır.

Onuncu sanal korumalı üye işlevi:

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    void *& val) const;

, eşdeğer tarama dönüştürme tanımlayıcısının olması pdışında ilki ile aynı şekilde davranır.

Son (on birinci) sanal korumalı üye işlevi:

virtual iter_type do_get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    bool& val) const;

, tam ve boş bir Boole giriş alanıyla eşleşmeye çalışmaması dışında ilk ile aynı şekilde davranır. Başarılı olursa Boole giriş alanını türünde bool bir değere dönüştürür ve bu değeri val olarak depolar.

Boole giriş alanı iki biçimden birini alır. Boolalpha false iseiosbase.flags() & ios_base::, dönüştürülen değerin 0 (yanlış için) veya 1 (true için) olması dışında, tamsayı giriş alanıyla aynıdır. Aksi takdirde, sıranın numpunct::falsename (false için) veya fac.numpunct::truename() (true için) ile eşleşmesifac. gerekir.()

Örnek

Sanal üye işlevinin tarafından do_getçağrıldığı get örneğine bakın.

num_get::get

Bir karakter dizisinden sayısal veya Boolean değeri ayıklar.

iter_type get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    bool& val) const;

iter_type get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    unsigned short& val) const;

iter_type get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    unsigned int& val) const;

iter_type get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    long& val) const;

iter_type get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    unsigned long& val) const;

iter_type get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    long long& val) const;

iter_type get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    unsigned long long& val) const;

iter_type get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    float& val) const;

iter_type get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    double& val) const;

iter_type get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    long double& val) const;

iter_type get(
    iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    void *& val) const;

Parametreler

birinci
Sayının okunduğu karakter aralığının başlangıcı.

son
Sayıyı okuyacak karakter aralığının sonu.

iosbase
Bayrakları dönüştürme tarafından kullanılan ios_base .

state
Hata durumunda failbitin eklendiği durum (bkz . ios_base::iostate).

Val
Okunan değer.

Dönüş Değeri

Değer okunduktan sonra yineleyici.

Açıklamalar

Tüm üye işlevleri do_get( first, last, iosbase, state, val) döndürür.

İlk sanal korumalı üye işlevi, tam ve boş bir tamsayı giriş alanını tanıyana kadar [ first, last) dizisinde ilk başta başlayan sıralı öğeleri eşleştirmeye çalışır. Başarılı olursa, bu alanı tür long olarak eşdeğer değerine dönüştürür ve sonucu val cinsinden depolar. Sayısal giriş alanının ötesindeki ilk öğeyi gösteren bir yineleyici döndürür. Aksi takdirde işlev hiçbir şeyi val olarak depolar ve durum olarak ayarlarios_base::failbit. Geçerli bir tamsayı giriş alanının herhangi bir ön ekinin ötesinde ilk öğeyi gösteren bir yineleyici döndürür. Her iki durumda da, dönüş değeri son değere eşitse işlev durum olarak ayarlanırios_base::eofbit.

Tamsayı giriş alanı, tarama işlevleri tarafından dosyadan bir dizi char öğeyi eşleştirmek ve dönüştürmek için kullanılan kurallarla dönüştürülür. Bu tür char öğelerin her birinin, basit, bire bir eşlemeyle eşdeğer CharType türde bir öğeyle eşlendiği varsayılır. Eşdeğer tarama dönüştürme belirtimi aşağıdaki gibi belirlenir:

Tamsayı giriş alanının biçimi, getloc çağrısı tarafından döndürülen yerel ayar fac use_facet<numpunct<Elem>(iosbase.tarafından daha fazla belirlenir.()) Özellikle:

  • fac.gruplandırma , basamakların herhangi bir ondalık noktasının solunda nasıl gruplandırileceğini belirler.

  • fac. thousands_sep herhangi bir ondalık noktasının solundaki basamak gruplarını ayıran sırayı belirler.

Sayısal giriş alanında örneği fac.thousands_sep yoksa gruplandırma kısıtlaması uygulanmaz. Aksi takdirde, tarafından fac.grouping uygulanan tüm gruplandırma kısıtlamaları uygulanır ve tarama dönüştürmesi gerçekleşmeden önce ayırıcılar kaldırılır.

İkinci sanal korumalı üye işlevi:

virtual iter_type do_get(iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    unsigned long& val) const;

, dönüştürme belirtimini ld ile ludeğiştirmesi dışında ilkiyle aynı şekilde davranır. Başarılı olursa, sayısal giriş alanını türünde unsigned long bir değere dönüştürür ve bu değeri val cinsinden depolar.

Üçüncü sanal korumalı üye işlevi:

virtual iter_type do_get(iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    double& val) const;

, tam, boş bir kayan nokta giriş alanıyla eşleşmeye çalışması dışında ilk ile aynı şekilde davranır. fac. decimal_point, tamsayı basamaklarını kesir basamaklarından ayıran sırayı belirler. Eşdeğer tarama dönüştürme tanımlayıcısı şeklindedir lf.

Dördüncü sanal korumalı üye işlevi:

virtual iter_type do_get(iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    long double& val) const;

eşdeğer tarama dönüştürme tanımlayıcısının Lfolması dışında üçüncüyle aynı şekilde davranır.

Beşinci sanal korumalı üye işlevi:

virtual iter_type do_get(iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    void *& val) const;

, eşdeğer tarama dönüştürme tanımlayıcısının olması pdışında ilki ile aynı şekilde davranır.

Altıncı sanal korumalı üye işlevi:

virtual iter_type do_get(iter_type first,
    iter_type last,
    ios_base& iosbase,
    ios_base::iostate& state,
    bool& val) const;

, tam olmayan bir boole giriş alanıyla eşleşmeye çalışması dışında ilk ile aynı şekilde davranır. Başarılı olursa Boole giriş alanını türünde bool bir değere dönüştürür ve bu değeri val olarak depolar.

Boole giriş alanı iki biçimden birini alır. iosbase.flags & ios_base::boolalpha isefalse, bir tamsayı giriş alanıyla aynıdır, ancak dönüştürülen değerin 0 (içinfalse) veya 1 (içintrue) olması gerekir. Aksi takdirde, sıra falsename (için false) veyafac. truename (içintrue) ile eşleşmelidirfac..

Örnek

// num_get_get.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;
int main( )
{
   locale loc( "german_germany" );

   basic_stringstream<char> psz, psz2;
   psz << "-1000,56";

   ios_base::iostate st = 0;
   long double fVal;
   cout << use_facet <numpunct <char> >(loc).thousands_sep( ) << endl;

   psz.imbue( loc );
   use_facet <num_get <char> >
   (loc).get( basic_istream<char>::_Iter( psz.rdbuf( ) ),
           basic_istream<char>::_Iter(0), psz, st, fVal );

   if ( st & ios_base::failbit )
      cout << "money_get( ) FAILED" << endl;
   else
      cout << "money_get( ) = " << fVal << endl;
}

num_get::iter_type

Bir giriş yineleyiciyi açıklayan tür.

typedef InputIterator iter_type;

Açıklamalar

türü, şablon parametresi InputIteratoriçin bir eş anlamlıdır.

num_get::num_get

Dizilerden sayısal değerleri ayıklamak için kullanılan türdeki num_get nesneler için oluşturucu.

explicit num_get(size_t refs = 0);

Parametreler

refs
Nesne için bellek yönetimi türünü belirtmek için kullanılan tamsayı değeri.

Açıklamalar

refs parametresinin olası değerleri ve anlamları şunlardır:

  • 0: Nesnenin yaşam süresi, nesnenin bulunduğu yerel ayarlar tarafından yönetilir.

  • 1: Nesnenin ömrü el ile yönetilmelidir.

  • > 1: Bu değerler tanımlanmamıştır.

Yıkıcı korunduğundan doğrudan örnek yoktur.

Oluşturucu, temel nesnesini modelle locale::(refs)başlatır.

Ayrıca bkz.

<yerel ayar>
model sınıfı
C++ Standart Kitaplığında İş Parçacığı Güvenliği