num_put Sınıfı
Sayısal değerlerin tür CharType
dizilerine 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 OutputIterator = ostreambuf_iterator<CharType>>
class num_put : public locale::facet;
Parametreler
CharType
Bir program içindeki yerel ayarın karakterlerini kodlamak için kullanılan tür.
OutputIterator
Sayısal koyma işlevlerinin kendi çıktılarının yazılacağı yineleyici 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_put | türündeki num_put 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 çıkış yineleyiciyi açıklayan tür. |
Üye işlevleri
Üye işlevi | Açıklama |
---|---|
do_put | Bir sayıyı belirli bir yerel ayar için biçimlendirilmiş s sırasını temsil eden bir s dizisine CharType dönüştürmek için çağrılan sanal işlev. |
koymak | Bir sayıyı, belirli bir yerel ayar için biçimlendirilmiş sayıyı temsil eden bir s dizisine CharType dönüştürür. |
Gereksinimler
Üst bilgi:<yerel ayar>
Ad alanı: std
num_put::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ü, şablon parametresi CharType
için bir eş anlamlıdır.
num_put::d o_put
Bir sayıyı belirli bir yerel ayar için biçimlendirilmiş s sırasını temsil eden bir s dizisine CharType
dönüştürmek için çağrılan sanal işlev.
virtual iter_type do_put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
bool val) const;
virtual iter_type do_put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
long val) const;
virtual iter_type do_put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
unsigned long val) const;
virtual iter_type do_put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
double val) const;
virtual iter_type do_put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
long double val) const;
virtual iter_type do_put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
const void* val) const;
virtual iter_type do_put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
const long long val) const;
virtual iter_type do_put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
const unsigned long long val) const;
Parametreler
önümüzdeki
Eklenen dizenin ilk öğesini ele alan bir yineleyici.
_Iosbase
Çıktıyı noktalamada kullanılan numpunct modelini ve çıkışı biçimlendirmek için bayrakları içeren yerel ayarı içeren akışı belirtti.
_Doldurmak
Aralık için kullanılan karakter.
Val
Çıkış olarak kullanılacak sayı veya Boole türü.
Dönüş Değeri
Çıkış yineleyicisi, üretilen son öğenin ötesindeki konumu giderir.
Açıklamalar
İlk sanal korumalı üye işlevi, val değerinden bir tamsayı çıkış alanı oluşturmak için, yanından başlayarak sıralı öğeler oluşturur. İşlev, oluşturulan tamsayı çıktı alanının ötesine öğe eklemek için sonraki yeri gösteren bir yineleyici döndürür.
Tamsayı çıkış alanı, bir dosyaya bir dizi char
öğe oluşturmak için yazdırma işlevleri tarafından kullanılan kurallarla oluşturulur. Bu tür her char öğesinin, basit, bire bir eşlemeyle eşdeğer CharType
türde bir öğeye eşlendiği varsayılır. Burada bir yazdırma işlevi boşluk veya 0 basamaklı bir alanı tuş takımına ekler, ancak do_put
bunun yerine kullanır fill
. Eşdeğer yazdırma dönüştürme belirtimi aşağıdaki gibi belirlenir:
Iosbase ise. bayraklar &
ios_base::basefield
==ios_base::
oct, dönüştürme belirtimi şeklindedir.lo
iosbase.flags & ios_base::basefield ==
ios_base::
onaltılık ise, dönüştürme belirtimi olur.lx
Aksi takdirde, dönüştürme belirtimi şeklindedir
ld
.
Iosbase ise. width sıfır değil, bu değerin alan genişliği önceden eklenir. İşlev daha sonra iosbase'i çağırır. width(0), alan genişliğini sıfıra sıfırlamak için.
Doldurma yalnızca çıkış alanını belirtmek için gereken en az N öğesi sayısı iosbase'den küçükse gerçekleşir. genişliğine bakın. Bu tür doldurma, dolgunun N - genişlikli kopyalarından oluşan bir diziden oluşur. Doldurma daha sonra aşağıdaki gibi gerçekleşir:
Iosbase ise. bayraklar &
ios_base::adjustfield
==ios_base::
sol, bayrak - önceden eklenir. (Doldurma, oluşturulan metinden sonra gerçekleşir.)iosbase.flags &ios_base::adjustfield ==
ios_base::
iç ise, 0 bayrağı eklenir. (Sayısal bir çıkış alanı için doldurma işlemi, yazdırma işlevleri panelinin 0 olduğu yerde gerçekleşir.)Aksi takdirde ek bayrak eklenmez. (Doldurma, oluşturulan diziden önce gerçekleşir.)
Nihayet:
Iosbase ise. flags &
ios_base::
showpos sıfır değil, bayrak + dönüştürme belirtimine eklenir.Iosbase ise. flags & ios_base::showbase sıfır değil, bayrağı # dönüştürme belirtimine eklenir.
Tamsayı çıkış alanının biçimi, elem( iosbase) numpunct<Elem>( use_facet<çağrısı tarafından döndürülen yerel ayar kadranı tarafından belirlenir. getloc). Özellikle:
öğ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 sırayı belirler
Fac tarafından gruplandırma kısıtlaması uygulanmazsa. gruplandırma (ilk öğesi CHAR_MAX değerine sahiptir), ardından fac örneği yoktur. thousands_sep
çıkış alanında oluşturulur. Aksi takdirde, yazdırma dönüştürmesi gerçekleştikten sonra ayırıcılar eklenir.
İkinci sanal korumalı üye işlevi:
virtual iter_type do_put(iter_type next,
ios_base& _Iosbase,
CharType _Fill,
unsigned long val) const;
, dönüştürme belirtimini ld
ile lu
değiştirmesi dışında ilkiyle aynı şekilde davranır.
Üçüncü sanal korumalı üye işlevi:
virtual iter_type do_put(iter_type next,
ios_base& _Iosbase,
CharType _Fill,
double val) const;
, değer değerinden kayan nokta çıkış alanı oluşturması dışında ilk ile aynı şekilde davranır. öğesine bakın. decimal_point, tamsayı basamaklarını kesir basamaklarından ayıran sırayı belirler. Eşdeğer yazdırma dönüştürme belirtimi aşağıdaki gibi belirlenir:
Iosbase ise. bayraklar &
ios_base::floatfield
==ios_base::
sabit, dönüştürme belirtimi şeklindedir.lf
Iosbase ise. flags &ios_base::floatfield
ios_base::
== scientific, dönüştürme belirtimi şeklindedir.le
Iosbase ise. flags &ios_base::
uppercase nonzero,e
yerine ileE
değiştirilir.Aksi takdirde, dönüştürme belirtimi lg'dir. Iosbase ise. flags & ios_base::uppercase nonzero,
g
ileG
değiştirilir.
Iosbase ise. flags & ios_base::fixed sıfır olmayan veya iosbase ise. duyarlık sıfırdan büyüktür ve iosbase değerine sahip bir duyarlıktır. duyarlık , dönüştürme belirtimine eklenir. Herhangi bir doldurma, tamsayı çıkış alanıyla aynı şekilde davranır. Doldurma karakteri dolgudur. Nihayet:
Iosbase ise. flags &
ios_base::
showpos sıfır değil, bayrak + dönüştürme belirtimine eklenir.Iosbase ise. flags &
ios_base::
showpoint sıfır değil, bayrak # dönüştürme belirtimine eklenir.
Dördüncü sanal korumalı üye işlevi:
virtual iter_type do_put(iter_type next,
ios_base& _Iosbase,
CharType _Fill,
long double val) const;
, dönüştürme belirtimindeki niteleyicinin l
ile L
değiştirilmesi dışında üçüncüyle aynı şekilde davranır.
Beşinci sanal korumalı üye işlevi:
virtual iter_type do_put(iter_type next,
ios_base& _Iosbase,
CharType _Fill,
const void* val) const;
, dönüştürme belirtiminin p
, artı doldurmayı belirtmek için gereken niteleyicinin olması dışında ilki ile aynı şekilde davranır.
Altıncı sanal korumalı üye işlevi:
virtual iter_type do_put(iter_type next,
ios_base& _Iosbase,
CharType _Fill,
bool val) const;
, val'den bir Boole çıkış alanı oluşturması dışında ilk ile aynı şekilde davranır.
Boole çıkış alanı iki biçimden birini alır. iosbase.flags & ios_base::
boolalpha isefalse
, üye işlevi genellikle 0 (için) veya 1 (içintrue
false
) şeklinde oluşturulmuş bir dizi oluşturan öğesini döndürürdo_put(_Next, _Iosbase, _Fill, (long)val)
. Aksi takdirde, oluşturulan sıra her ikisine de yöneliktir.falsename (için false
) veya fac.truename (için true
).
Yedinci sanal korumalı üye işlevi:
virtual iter_type do_put(iter_type next,
ios_base& iosbase,
Elem fill,
long long val) const;
, dönüştürme belirtimini ld
ile lld
değiştirmesi dışında ilkiyle aynı şekilde davranır.
Sekizinci sanal korumalı üye işlevi:
virtual iter_type do_put(iter_type next,
ios_base& iosbase,
Elem fill,
unsigned long long val) const;
, dönüştürme belirtimini ld
ile llu
değiştirmesi dışında ilkiyle aynı şekilde davranır.
Örnek
Put örneğine bakın ve bu da öğesini çağırırdo_put
.
num_put::iter_type
Bir çıkış yineleyiciyi açıklayan tür.
typedef OutputIterator iter_type;
Açıklamalar
Tür, OutputIterator şablon parametresinin eş anlamlısı.
num_put::num_put
türündeki num_put
nesneler için oluşturucu.
explicit num_put(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.
num_put::p ut
Bir sayıyı, belirli bir yerel ayar için biçimlendirilmiş sayıyı temsil eden bir s dizisine CharType
dönüştürür.
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
bool val) const;
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
long val) const;
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
unsigned long val) const;
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
Long long val) const;
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
Unsigned long long val) const;
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
double val) const;
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
long double val) const;
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
const void* val) const;
Parametreler
dest
Eklenen dizenin ilk öğesini ele alan bir yineleyici.
_Iosbase
Çıktıyı noktalamada kullanılan numpunct modelini ve çıkışı biçimlendirmek için bayrakları içeren yerel ayarı içeren akışı belirtti.
_Doldurmak
Aralık için kullanılan karakter.
Val
Çıkış olarak kullanılacak sayı veya Boole türü.
Dönüş Değeri
Çıkış yineleyicisi, üretilen son öğenin ötesindeki konumu giderir.
Açıklamalar
Tüm üye işlevleri do_put( next
, _Iosbase
, _Fill
, val
) döndürür.
Örnek
// num_put_put.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;
int main( )
{
locale loc( "german_germany" );
basic_stringstream<char> psz2;
ios_base::iostate st = 0;
long double fVal;
cout << "The thousands separator is: "
<< use_facet < numpunct <char> >(loc).thousands_sep( )
<< endl;
psz2.imbue( loc );
use_facet < num_put < char > >
( loc ).put(basic_ostream<char>::_Iter(psz2.rdbuf( ) ),
psz2, ' ', fVal=1000.67);
if ( st & ios_base::failbit )
cout << "num_put( ) FAILED" << endl;
else
cout << "num_put( ) = " << psz2.rdbuf( )->str( ) << endl;
}
The thousands separator is: .
num_put( ) = 1.000,67
Ayrıca bkz.
<yerel ayar>
model sınıfı
C++ Standart Kitaplığında İş Parçacığı Güvenliği