Aracılığıyla paylaş


money_get Sınıfı

Sınıf şablonu, tür CharType dizilerinin parasal değerlere dönüşümlerini denetlemek için yerel ayar model olarak görev yapabilecek bir nesneyi açıklar.

Sözdizimi

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

Parametreler

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

InputIterator
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
money_get Parasal değerleri temsil eden dizilerden sayısal değerleri ayıklamak için kullanılan türdeki money_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.
string_type türünde karakterler içeren bir dizeyi açıklayan tür CharType.

Üye işlevleri

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

Gereksinimler

Üst bilgi:<yerel ayar>

Ad alanı: std

money_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.

money_get::d o_get

Parasal değeri temsil eden bir karakter dizisinden sayısal bir değer ayıklamak için çağrılan sanal işlev.

virtual iter_type do_get(iter_type first,
    iter_type last,
    bool Intl,
    ios_base& Iosbase,
    ios_base::iostate& State,
    long double& val) const virtual iter_type do_get(iter_type first,
    iter_type last,
    bool Intl,
    ios_base& Iosbase,
    ios_base::iostate& State,
    string_type& val) const

Parametreler

birinci
Dönüştürülecek sıranın başlangıcını ele alan giriş yineleyicisi.

son
Dönüştürülecek sıranın sonunu adresleyerek giriş yineleyicisi.

Intl
Dizide beklenen para birimi simgesinin türünü gösteren Boole değeri: true uluslararasıysa, false yerelse.

Iosbase
Ayarlandığında para birimi simgesinin isteğe bağlı olduğunu gösteren biçim bayrağı; aksi takdirde gereklidir.

İl
İşlemlerin başarılı olup olmadığına göre akış durumu için uygun bit maskesi öğelerini ayarlar.

Val
Dönüştürülen sırayı depolayarak bir dize.

Dönüş Değeri

Parasal giriş alanının ötesindeki ilk öğeyi ele alan bir giriş yineleyicisi.

Açıklamalar

İlk sanal korumalı üye işlevi, tam ve boş bir parasal giriş alanı tanıyana kadar [ first, last) dizisinde ilk başta başlayan sıralı öğeleri eşleştirmeye çalışır. Başarılı olursa, miktarı göstermek ve sonucu string_type nesne değeri içinde depolamak için bu alanı isteğe bağlı olarak eksi işaretiyle ( -) önce gelen bir veya daha fazla ondalık basamak dizisine dönüştürür. Parasal giriş alanının ötesindeki ilk öğeyi gösteren bir yineleyici döndürür. Aksi takdirde işlev boş bir diziyi val olarak depolar ve State olarak ayarlarios_base::failbit. Geçerli bir parasal 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.

İkinci sanal korumalı üye işlevi ilk işlevle aynı şekilde davranır, ancak başarılı olursa isteğe bağlı olarak imzalanan basamak dizisini tür long double değerine dönüştürür ve bu değeri val cinsinden depolar.

Parasal giriş alanının biçimi, etkin çağrı< use_facet moneypunct<CharType( intl>>( iosbase) tarafından döndürülen yerel ayar modeli tarafından belirlenir. getloc).

Özellikle:

  • öğesine bakın. neg_format, alanın bileşenlerinin oluşma sırasını belirler.

  • öğesine bakın. curr_symbol, para birimi simgesi oluşturan öğelerin sırasını belirler.

  • öğesine bakın. positive_sign, pozitif bir işaret oluşturan öğelerin sırasını belirler.

  • öğesine bakın. negative_sign, negatif bir işaret oluşturan öğelerin sırasını belirler.

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

  • öğesine bakın. thousands_sep herhangi bir ondalık noktasının solundaki basamak gruplarını ayıran öğeyi belirler.

  • öğesine bakın. decimal_point, tamsayı basamaklarını kesir basamaklarından ayıran öğeyi belirler.

  • öğesine bakın. frac_digits herhangi bir ondalık noktasının sağındaki önemli kesir basamaklarının sayısını belirler. tarafından çağrılandan frac_digitsdaha fazla kesir basamağı olan bir parasal tutarı ayrıştırırken, do_get en fazla frac_digits karakter tüketildikten sonra ayrıştırma durdurulur.

İşaret dizesinde ( fac. veya fac. ) birden fazla öğe varsa, biçim deseninde ( fac. ) yalnızca money_base::sign değerine eşit öğenin göründüğü ilk öğe eşleştirilir. neg_formatpositive_signnegative_sign Kalan öğeler parasal giriş alanının sonunda eşleştirilir. İki dizenin de parasal giriş alanındaki bir sonraki öğeyle eşleşen bir ilk öğesi yoksa, işaret dizesi boş olarak alınır ve işaret pozitif olur.

Iosbase ise. flags & showbase sıfır değil, dizeye yönelik. curr_symbolmoney_base::symbol öğesine eşit öğenin biçim deseninde göründüğü yerle eşleşmelidir. Aksi takdirde , biçim deseninin sonunda money_base::symbol oluşursa ve işaret dizesinin hiçbir öğesi eşleştirilmeyecekse, para birimi simgesi eşleşmez. Aksi takdirde, para birimi simgesi isteğe bağlı olarak eşleştirilir.

Herhangi bir fac örneği yoksa. thousands_sepparasal giriş alanının değer bölümünde gerçekleşir (burada money_base::value öğesine eşit öğe biçim deseninde görünür), gruplandırma kısıtlaması uygulanmaz. Aksi takdirde, fac tarafından uygulanan gruplandırma kısıtlamaları. gruplandırma uygulanır. Elde edilen basamak dizisinin, düşük sıralı bir tamsayıyı temsil ettiğini unutmayın. frac_digits ondalık basamaklar, ondalık noktasının sağındaki kabul edilir.

biçim deseninin sonunda dışında görünüyorsa, biçim deseninde money_base::space'e eşit öğe göründüğünde rastgele boşluk eşleştirilir. Aksi takdirde, iç boşluk eşleşmez. Ctype<CharType>>( iosbase) use_facet<bir öğe ch boşluk olarak kabul edilir. getloc). is( ctype_base::space, ch) şeklindedir true.

Örnek

Get örneğine bakın ve bu da öğesini çağırırdo_get.

money_get::get

Parasal bir değeri temsil eden bir karakter dizisinden sayısal değeri ayıklar.

iter_type get(iter_type first,
    iter_type last,
    bool Intl,
    ios_base& Iosbase,
    ios_base::iostate& State,
    long double& val) const;

iter_type get(iter_type first,
    iter_type last,
    bool Intl,
    ios_base& Iosbase,
    ios_base::iostate& State,
    string_type& val) const;

Parametreler

birinci
Dönüştürülecek sıranın başlangıcını ele alan giriş yineleyicisi.

son
Dönüştürülecek sıranın sonunu adresleyerek giriş yineleyicisi.

Intl
Dizide beklenen para birimi simgesinin türünü gösteren Boole değeri: true uluslararasıysa, false yerelse.

Iosbase
Ayarlandığında para birimi simgesinin isteğe bağlı olduğunu gösteren biçim bayrağı; aksi takdirde,

İl
İşlemlerin başarılı olup olmadığına göre akış durumu için uygun bit maskesi öğelerini ayarlar.

Val
Dönüştürülen sırayı depolayarak bir dize.

Dönüş Değeri

Parasal giriş alanının ötesindeki ilk öğeyi ele alan bir giriş yineleyicisi.

Açıklamalar

Her iki üye işlevi de do_get(first, last, Intl, Iosbase, State, val) döndürür.

Örnek

// money_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;
   psz << use_facet<moneypunct<char, 1> >(loc).curr_symbol() << "-1.000,56";
   basic_stringstream< char > psz2;
   psz2 << "-100056" << use_facet<moneypunct<char, 1> >(loc).curr_symbol();

   ios_base::iostate st = 0;
   long double fVal;

   psz.flags( psz.flags( )|ios_base::showbase );
   // Which forced the READING the currency symbol
   psz.imbue(loc);
   use_facet < money_get < char > >( loc ).
      get( basic_istream<char>::_Iter( psz.rdbuf( ) ),
           basic_istream<char>::_Iter( 0 ), true, psz, st, fVal );

   if ( st & ios_base::failbit )
      cout << "money_get(" << psz.str( ) << ", intl = 1) FAILED"
           << endl;
   else
      cout << "money_get(" << psz.str( ) << ", intl = 1) = "
           << fVal/100.0 << endl;

   use_facet < money_get < char > >( loc ).
      get(basic_istream<char>::_Iter(psz2.rdbuf( )),
          basic_istream<char>::_Iter(0), false, psz2, st, fVal);

   if ( st & ios_base::failbit )
      cout << "money_get(" << psz2.str( ) << ", intl = 0) FAILED"
           << endl;
   else
      cout << "money_get(" << psz2.str( ) << ", intl = 0) = "
           << fVal/100.0 << endl;
};

money_get::iter_type

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

typedef InputIterator iter_type;

Açıklamalar

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

money_get::money_get

Parasal değerleri temsil eden dizilerden sayısal değerleri ayıklamak için kullanılan türdeki money_get nesneler için oluşturucu.

explicit money_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 locale::facet(_Refs) ile başlatır.

money_get::string_type

CharType türünde karakterler içeren bir dizeyi açıklayan bir tür.

typedef basic_string<CharType, Traits, Allocator> string_type;

Açıklamalar

türü, sınıf şablonunun basic_string özelleştirilmesini açıklar.

Ayrıca bkz.

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