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ü long
olarak 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 state
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 eşitse last
işlevi içinde state
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ş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 lu
değ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 lld
değ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 llu
değ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 Lf
olması 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ı p
dışı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:
Sekizli bayraklar
& ios_base::basefield == ios_base::
varsaiosbase.
, dönüştürme belirtimi şeklindedirlo
.Onaltılık ise
iosbase.flags & ios_base::basefield == ios_base::
, dönüştürme belirtimi şeklindedirlx
.ise
iosbase.flags & ios_base::basefield == 0
, dönüştürme belirtimi şeklindedirli
.Aksi takdirde, dönüştürme belirtimi şeklindedir
ld
.
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 lu
değ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 Lf
olması 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ı p
dışı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 InputIterator
iç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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin