Libreria locale C ++ - length

Descrizione

Restituisce il numero di caratteri esterni nell'intervallo [from, from_end) che potrebbero essere tradotti in un massimo di caratteri interni massimi, output come se si applicasse codecvt :: in.

Dichiarazione

Di seguito è riportata la dichiarazione per std :: ctype :: length.

C ++ 98

int length (state_type& state, const extern_type* from,
            const extern_type* from_end, size_t max) const;

C ++ 11

int length (state_type& state, const extern_type* from,
            const extern_type* from_end, size_t max) const;

Parametri

  • state - È un oggetto di stato.

  • from, from_end - Serve a trovare un carattere iniziale e uno finale della sequenza sorgente.

  • max - Viene utilizzato per trovare la lunghezza massima della sequenza tradotta.

Valore di ritorno

Restituisce la lunghezza della sequenza di caratteri, in termini di caratteri interni tradotti.

Eccezioni

No-throw guarantee - non genera mai eccezioni anche se viene generata un'eccezione, non ci sono modifiche nell'oggetto facet.

Gare di dati

Si accede all'oggetto facet.

Esempio

Nell'esempio seguente viene spiegato lo std :: ctype :: length.

#include <iostream>
#include <locale>
#include <cwchar>
#include <cstddef>

int main () {
   typedef std::codecvt<wchar_t,char,std::mbstate_t> facet_type;

   std::locale loc;
   const facet_type& myfacet = std::use_facet<facet_type>(loc);

   const char source[] = "sairamkrishna mammahe";
  
   std::mbstate_t mystate;
   const char * pc;
   wchar_t * pwc;

   std::size_t length = myfacet.length (mystate, source, source+sizeof(source), 30);

   wchar_t* dest = new wchar_t[length];
   myfacet.in (mystate, source, source+sizeof(source), pc, dest, dest+length, pwc);

   std::wcout << dest << std::endl;

   delete[] dest;

   return 0;
}

Compiliamo ed eseguiamo il programma sopra, questo produrrà il seguente risultato:

sairamkrishna mammahe