Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En klassmall som beskriver ett objekt som kan fungera som en språkvariant för att styra konverteringar av numeriska värden till sekvenser av typen CharType.
Syntax
template <class CharType,
class OutputIterator = ostreambuf_iterator<CharType>>
class num_put : public locale::facet;
Parameterar
CharType
Den typ som används i ett program för att koda tecken i ett språk.
OutputIterator
Den typ av iterator som de numeriska put-funktionerna skriver sina utdata till.
Anmärkningar
Precis som med alla nationella aspekter har det statiska objekt-ID:t ett initialt lagrat värde på noll. Det första försöket att komma åt dess lagrade värde lagrar ett unikt positivt värde i id.
Konstruktörer
| Konstruktor | Beskrivning |
|---|---|
| num_put | Konstruktorn för objekt av typen num_put. |
Typedefs
| Typnamn | Beskrivning |
|---|---|
| char_type | En typ som används för att beskriva ett tecken som används av ett språk. |
| iter_type | En typ som beskriver en iterator för utdata. |
Medlemsfunktioner
| Medlemsfunktion | Beskrivning |
|---|---|
| do_put | En virtuell funktion som anropas för att konvertera ett tal till en sekvens med CharTypes som representerar det tal som formaterats för ett visst språk. |
| lägga | Konverterar ett tal till en sekvens med CharTypes som representerar talet som är formaterat för ett visst språk. |
Kravspecifikation
Rubrik:<Locale>
namnområde: std
num_put::char_type
En typ som används för att beskriva ett tecken som används av ett språk.
typedef CharType char_type;
Anmärkningar
Typen är en synonym för mallparametern CharType.
num_put::d o_put
En virtuell funktion som anropas för att konvertera ett tal till en sekvens med CharTypes som representerar det tal som formaterats för ett visst språk.
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;
Parameterar
nästa
En iterator som hanterar det första elementet i den infogade strängen.
_Iosbase
Angav dataströmmen som innehåller nationella inställningar med den numpunct-fasetter som används för att punktera utdata och flaggor för formatering av utdata.
_Fylla
Ett tecken som används för avstånd.
val
Talet eller den booleska typen som ska matas ut.
Returvärde
En utdata iterator adresserar positionen en utöver det sista elementet som producerades.
Anmärkningar
Den första virtuella skyddade medlemsfunktionen genererar sekventiella element som börjar bredvid för att skapa ett heltalsutdatafält från värdet för val. Funktionen returnerar en iterator som anger nästa plats för att infoga ett element utanför det genererade heltalsutdatafältet.
Heltalsutdatafältet genereras av samma regler som används av utskriftsfunktionerna för att generera en serie char element till en fil. Varje sådant teckenelement antas mappa till ett motsvarande element av typen CharType genom en enkel mappning från ett till ett. Där en utskriftsfunktion fyller ett fält med antingen blanksteg eller siffran 0 använder do_puti fill stället . Motsvarande specifikation för utskriftskonvertering fastställs på följande sätt:
Om iosbase. flaggor och
ios_base::basefield==ios_base::okt, konverteringsspecifikationen ärlo.Om iosbase.flags & ios_base::basefield ==
ios_base::hex ärlxkonverteringsspecifikationen .Annars är
ldkonverteringsspecifikationen .
Om iosbase. bredden är icke-noll, en fältbredd för det här värdet läggs till i förväg. Funktionen anropar sedan iosbase. width(0) för att återställa fältbredden till noll.
Utfyllnad sker endast om det minsta antalet element N som krävs för att ange utdatafältet är mindre än iosbase. bredd. Sådan utfyllnad består av en sekvens med N - bredd kopior av fyllning. Utfyllnad sker sedan på följande sätt:
Om iosbase. flaggor och
ios_base::adjustfield==ios_base::vänster, flaggan - förbereds. (Utfyllnad sker efter den genererade texten.)Om iosbase.flags & ios_base::adjustfield ==
ios_base::internal, förbereds flaggan 0 . (För ett numeriskt utdatafält sker utfyllnad där utskriftsfunktionerna med 0.)Annars förbereds ingen ytterligare flagga. (Utfyllnad sker före den genererade sekvensen.)
Slutligen:
Om iosbase. flaggor och
ios_base::showpos är ickezero, flaggan + är förberedd till konverteringsspecifikationen.Om iosbase. flaggor & ios_base::showbase är nonzero, flaggan # läggs till i konverteringsspecifikationen.
Formatet för ett heltalsutdatafält bestäms ytterligare av språkvariantensfasetteringsfac som returneras av anropet use_facet<numpunct<Elem>( iosbase. getloc). Specifikt:
fac. gruppering avgör hur siffror grupperas till vänster om valfri decimalpunkt
fac. thousands_sep avgör sekvensen som separerar grupper med siffror till vänster om valfri decimalpunkt
Om inga grupperingsbegränsningar införs av fac.
gruppering (dess första element har värdet CHAR_MAX) och sedan inga instanser av fac.
thousands_sep genereras i utdatafältet. Annars infogas avgränsare efter utskriftskonverteringen.
Den andra virtuella skyddade medlemsfunktionen:
virtual iter_type do_put(iter_type next,
ios_base& _Iosbase,
CharType _Fill,
unsigned long val) const;
beter sig på samma sätt som den första, förutom att den ersätter en konverteringsspecifikation för ld med lu.
Den tredje virtuella skyddade medlemsfunktionen:
virtual iter_type do_put(iter_type next,
ios_base& _Iosbase,
CharType _Fill,
double val) const;
beter sig på samma sätt som det första, förutom att det genererar ett flyttalsutdatafält från värdet för val. fac. decimal_point avgör sekvensen som skiljer heltalssiffrorna från bråksiffrorna. Motsvarande specifikation för utskriftskonvertering fastställs på följande sätt:
Om iosbase. flaggor och
ios_base::floatfield==ios_base::fasta, konverteringsspecifikationen ärlf.Om iosbase. flaggor & ios_base::floatfield ==
ios_base::scientific, konverteringsspecifikationen ärle. Om iosbase. flaggor ochios_base::versaler är ickezero,eersätts medE.Annars är konverteringsspecifikationen lg. Om iosbase. flags & ios_base::uppercase is nonzero,
gis replaced withG.
Om iosbase. flaggor & ios_base::fixed är ickezero eller om iosbase. precision är större än noll, en precision med värdet iosbase. precisionen läggs till i konverteringsspecifikationen. Utfyllnad fungerar på samma sätt som för ett heltalsutdatafält. Utfyllnadstecknet är fyllt. Slutligen:
Om iosbase. flaggor och
ios_base::showpos är ickezero, flaggan + är förberedd till konverteringsspecifikationen.Om iosbase. flaggor och
ios_base::showpoint är intezero, flaggan # förbereds för konverteringsspecifikationen.
Den fjärde virtuella skyddade medlemsfunktionen:
virtual iter_type do_put(iter_type next,
ios_base& _Iosbase,
CharType _Fill,
long double val) const;
beter sig på samma sätt som den tredje, förutom att kvalificeraren l i konverteringsspecifikationen ersätts med L.
Den femte virtuella skyddade medlemsfunktionen:
virtual iter_type do_put(iter_type next,
ios_base& _Iosbase,
CharType _Fill,
const void* val) const;
beter sig på samma sätt den första, förutom att konverteringsspecifikationen är pplus alla kvalificerare som krävs för att ange utfyllnad.
Den sjätte virtuella skyddade medlemsfunktionen:
virtual iter_type do_put(iter_type next,
ios_base& _Iosbase,
CharType _Fill,
bool val) const;
beter sig på samma sätt som det första, förutom att det genererar ett booleskt utdatafält från val.
Ett booleskt utdatafält har ett av två formulär. Om iosbase.flags & ios_base::boolalpha är falsereturnerar do_put(_Next, _Iosbase, _Fill, (long)val)medlemsfunktionen , som vanligtvis genererar en genererad sekvens med antingen 0 (för false) eller 1 (för true). Annars är den genererade sekvensen antingen fac. falsename (för false), eller fac.truename (för true).
Den sjunde virtuella skyddade medlemsfunktionen:
virtual iter_type do_put(iter_type next,
ios_base& iosbase,
Elem fill,
long long val) const;
beter sig på samma sätt som den första, förutom att den ersätter en konverteringsspecifikation för ld med lld.
Den åttonde virtuella skyddade medlemsfunktionen:
virtual iter_type do_put(iter_type next,
ios_base& iosbase,
Elem fill,
unsigned long long val) const;
beter sig på samma sätt som den första, förutom att den ersätter en konverteringsspecifikation för ld med llu.
Exempel
Se exemplet för put, som anropar do_put.
num_put::iter_type
En typ som beskriver en iterator för utdata.
typedef OutputIterator iter_type;
Anmärkningar
Typen är synonym för mallparametern OutputIterator.
num_put::num_put
Konstruktorn för objekt av typen num_put.
explicit num_put(size_t _Refs = 0);
Parameterar
_Refs
Heltalsvärde som används för att ange typ av minneshantering för objektet.
Anmärkningar
Möjliga värden för parametern _Refs och deras betydelse är:
0: Objektets livslängd hanteras av de nationella inställningar som innehåller det.
1: Objektets livslängd måste hanteras manuellt.
> 1: Dessa värden har inte definierats.
Inga direkta exempel är möjliga, eftersom destructor är skyddad.
Konstruktorn initierar sitt basobjekt med språkvarianten::facet(_ Refs).
num_put::p ut
Konverterar ett tal till en sekvens med CharTypes som representerar talet som är formaterat för ett visst språk.
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;
Parameterar
dest
En iterator som hanterar det första elementet i den infogade strängen.
_Iosbase
Angav den ström som innehåller nationella inställningar med den numpunct-fasetter som används för att punktera utdata och flaggor för formatering av utdata.
_Fylla
Ett tecken som används för avstånd.
val
Talet eller den booleska typen som ska matas ut.
Returvärde
En utdata iterator adresserar positionen en utöver det sista elementet som producerades.
Anmärkningar
Alla medlemsfunktioner returnerar do_put(next, _Iosbase, _Fill, val).
Exempel
// 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
Se även
<Locale>
fasetteringsklass
Trådsäkerhet i C++ Standard Library