C ++ Locale Library - comprimento

Descrição

Ele retorna o número de caracteres externos no intervalo [de, de_end) que poderiam ser traduzidos em no máximo de caracteres internos máximos, saída como se aplicasse codecvt :: in.

Declaração

A seguir está a declaração para 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;

Parâmetros

  • state - É um objeto de estado.

  • from, from_end - É usado para encontrar os caracteres inicial e final da sequência de origem.

  • max - É usado para encontrar o comprimento máximo da sequência traduzida.

Valor de retorno

Ele retorna o comprimento da sequência de caracteres, em termos de caracteres internos traduzidos.

Exceções

No-throw guarantee - nunca lança exceções, mesmo se uma exceção for lançada, não há mudanças no objeto de faceta.

Corridas de dados

O objeto faceta é acessado.

Exemplo

No exemplo a seguir explica sobre 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;
}

Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -

sairamkrishna mammahe