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 last
işlevi içinde State
ayarlanı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_digits
daha fazla kesir basamağı olan bir parasal tutarı ayrıştırırken,do_get
en fazlafrac_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_format
positive_sign
negative_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_symbol
money_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_sep
parasal 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