Ir ao conteúdo
  • Cadastre-se

C++ entendendo "ã" como ã, como converter ou trabalhar com isso?


Knuclesman

Posts recomendados

Estou trabalhando em um projeto onde possuo uma caixa de mensagem e ao clicar em enviar texto a string pega caracteres como "ã" e "á" como "A£" e "Â|" e coisas assim.
Acredito que seja problema de utf8 e latin algo do gênero mas eu não consigo converter nem trabalhar e ja pesquisei bastante.
 

Alguém conseguiria me disponibilizar um exemplo, classe ou método que eu pudesse utilizar para resolver este meu problema?

Link para o comentário
Compartilhar em outros sites

Você pode trabalhar com valores diretamente da tabela ASCII, por exemplo:

std::cout << char(131) << std::endl;

Mas você também pode utilizar a biblioteca locale.

#include <iostream>#include <locale.h>int main(void){    setlocale(LC_ALL, "Portuguese");    std::cout << "ÂÊÇÉÁ" << std::endl;}

Isto para representação, claro.

 

 

Quanto a entrada de caracteres especiais, este código me funciona corretamente.

#include <iostream>#include <locale.h>int main (void){    setlocale(LC_ALL, "Portuguese");    char letra;    std::cout <<"Digite um caracter: ";    std::cin >> letra;    std::cout <<"\nVocê digitou: " << letra;    return 0;}

Abraços.

Link para o comentário
Compartilhar em outros sites

Eu tenho uma lista de strings do tipo "aAãÃáàÀÁ" e quando eu digito ã eu preciso saber se esta string contem a letra q eu quero. O metodo ja esta funcionando se eu não usar acento e eu n posso mudar o setLocale desse projeto pois é um projeto enorme e eu só preciso fazer isso. Alguma ideia de como faze essa checagem? Preciso de algum jeito fazer "A£" bater com "ã".

Link para o comentário
Compartilhar em outros sites

Eu tenho uma lista de strings do tipo "aAãÃáàÀÁ" e quando eu digito ã eu preciso saber se esta string contem a letra q eu quero. O metodo ja esta funcionando se eu não usar acento e eu n posso mudar o setLocale desse projeto pois é um projeto enorme e eu só preciso fazer isso. Alguma ideia de como faze essa checagem? Preciso de algum jeito fazer "A£" bater com "ã".

 

Nesse caso você pode trabalhar com valores da tabela ASCII, como citado.

 

Abraços.

Link para o comentário
Compartilhar em outros sites

int main (void){    unsigned char letra;    cout <<"Digite um caracter: ";    cin >> letra;    cout <<"\nValor na tabela ASCII: " << int(letra);    cout <<"\nCaractere correspondente: " << char(letra);    return 0;}

Quando digo trabalhar com valores diretamente da tabela ASCII me refiro a isto  :) .

Link para o comentário
Compartilhar em outros sites

Estou usando Visual Estudio com o Marmalade e a Oxygine não sei o compilador mas cout e printf n funcionam aqui. Enfim eu tentei fazer uma classe minha para converter e coloquei todos os valores q eu encontrei de acento da letra "a" tanto maiusculo como minusculo e salvei em um array:  

string arr[] = { "a","A","á","@","à ","â","ã","ÃÃ","€Ã","ƒÃ"}; 

Mas quando eu checo se a palavra viãdo possui a 7a string do array ele n acha... Mas se a string retornada é viádo ele consege achar pelo terceiro, ou seja, somente alguns caracteres estão funcionando.

 

if(str.find(vMaster[b][j]) != std::string::npos){   int f = str.find(vMaster[b][j]);   str.replace(f,2,vMaster[b][0]);   break;}

Onde b é o numero de arrays que meu vector de arrays possui e j a posição da string do array ( o b é sempre 0 pois só estou testando com um vetor ).
Após checar a palavra viãdo com "ã" ele sempre retorna 0 e não -1, alias com qualquer letra ( que nao existe na lista de array ) ele acaba retornando 0 e não menos um ou seja sempre entra naquele if e da erro... <O>
E mesmo que retornasse -1 somente algumas das strings sao encontradas na palavra digitada...

Quando eu digito banãnã na chatbox aqui estou recebendo banãnã e preciso fazer isso ser convertido para banãnã novamente então tentei converter na mão mas ele n encontra Ã£ na palavra banãnã...

Por favor alguma dica?

 

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...