Biblioteca de configuración regional de C ++: longitud

Descripción

Devuelve el número de caracteres externos en el rango [desde, from_end) que podrían traducirse a un máximo de caracteres internos como máximo, como si se aplicara codecvt :: in.

Declaración

A continuación se muestra la declaración de 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 - Es un objeto de estado.

  • from, from_end - Solía ​​encontrar caracteres iniciales y finales de la secuencia fuente.

  • max - Se utiliza para encontrar la longitud máxima de la secuencia traducida.

Valor devuelto

Devuelve la longitud de la secuencia de caracteres, en términos de caracteres internos traducidos.

Excepciones

No-throw guarantee - nunca lanza excepciones incluso si se lanza una excepción, no hay cambios en el objeto de faceta.

Carreras de datos

Se accede al objeto de faceta.

Ejemplo

En el siguiente ejemplo se 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;
}

Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:

sairamkrishna mammahe