Biblioteca C ++ Locale - estreita
Descrição
É usado em caracteres estreitos e internamente, esta função simplesmente chama o membro protegido virtual do_narrow, que faz o acima por padrão no modelo genérico e na especialização char (ctype <char>).
Declaração
A seguir está a declaração para std :: ctype :: narrow.
C ++ 98
char narrow (char_type c, char dfault) const;
C ++ 11
char narrow (char_type c, char dfault) const;
Parâmetros
c - É um tipo char.
low,high - É um ponteiro para o início e o fim da sequência de caracteres.
to - É um ponteiro para uma série de elementos do tipo de caractere da faceta.
dfault - É um valor de caractere padrão.
Valor de retorno
Ele retorna a transformação de c.
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 :: narrow.
#include <iostream>
#include <locale>
#include <string>
int main () {
std::locale loc;
std::wstring yourname;
std::cout << "Please enter your a word: ";
std::getline (std::wcin,yourname);
std::wstring::size_type length = yourname.length();
std::cout << "The first (narrow) character in your word is: ";
std::cout << std::use_facet< std::ctype<wchar_t> >(loc).narrow ( yourname[0], '?' );
std::cout << '\n';
std::cout << "The narrow transformation of your word is: ";
char * pc = new char [length+1];
std::use_facet< std::ctype<wchar_t> >(loc).narrow ( yourname.c_str(),
yourname.c_str()+length+1, '?', pc);
std::cout << pc << '\n';
return 0;
}
Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -
Please enter your a word: sai
The first (narrow) character in your word is: s
The narrow transformation of your word is: sai