Aracılığıyla paylaş


num_put Sınıfı

Sayısal değerlerin tür CharTypedizilerine 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_putnesneler 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 CharTypedö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 CharTypedö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 CharTypeiç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 CharTypedö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:: 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 ludeğ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::floatfieldios_base:: == scientific, dönüştürme belirtimi şeklindedir.le Iosbase ise. flags & ios_base::uppercase nonzero, e yerine ile Edeğiştirilir.

  • Aksi takdirde, dönüştürme belirtimi lg'dir. Iosbase ise. flags & ios_base::uppercase nonzero, g ile Gdeğ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 Ldeğ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çintruefalse) ş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 llddeğ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 lludeğ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_putnesneler 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 CharTypedö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