C ++ Locale Library - out

Descrição

É usado para traduzir caracteres e a função para de converter assim que falha na conversão de um caractere ou quando from_end é alcançado e seu caractere é convertido com sucesso.

Declaração

A seguir está a declaração para std :: ctype :: out.

C ++ 98

result out (state_type& state, 
   const intern_type* from, const intern_type* from_end, const intern_type*& from_next,
   extern_type* to, extern_type* to_limit, extern_type*& to_next) const;

C ++ 11

result out (state_type& state, 
   const intern_type* from, const intern_type* from_end, const intern_type*& from_next,
   extern_type* to, extern_type* to_limit, extern_type*& to_next) const;

Parâmetros

  • state - É um objeto de estado.

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

  • from_next - É usado para localizar um elemento na faixa acima.

  • to_next - É usado para localizar um elemento na faixa acima.

Valor de retorno

Ele retorna codecvt_base :: result.

Exceções

Se uma exceção for lançada, não haverá mudanças no objeto da faceta, embora os personagens no intervalo possam ter sido afetados.

Corridas de dados

O objeto e os elementos no intervalo [baixo, alto) são acessados.

Exemplo

No exemplo abaixo, explica sobre std :: ctype :: out.

#include <iostream>
#include <locale>
#include <string>
#include <cwchar>

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

   std::locale mylocale;

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

   std::wstring mywstring;
   std::cout << "Enter a sentence: ";
   std::getline (std::wcin,mywstring);

   std::wstring::size_type length = mywstring.length();

   char* pstr= new char [length+1];
   std::mbstate_t mystate = std::mbstate_t();
   const wchar_t* pwc;
   char* pc;

   facet_type::result myresult = myfacet.out (mystate,
      mywstring.c_str(), mywstring.c_str()+length+1, pwc, pstr, pstr+length+1, pc);

   if (myresult==facet_type::ok)
      std::cout << "Translation successful and sentance should be: " << pstr << '\n';

   delete[] pstr;

   return 0;
}

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

Enter a sentence: sai ram 
Translation successful and sentance should be: sai ram