Ir ao conteúdo

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


Knuclesman

Posts recomendados

Postado

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?

Postado

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.

Postado

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 "ã".

Postado

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.

Postado

Não existe alguma classe ou methodo existente do tipo wstring str = msg.ConvertToUtf8(something something);
Eu pesquisei sobre como trabalhar com os valores da tabela e n achei nada sobre latin1 com 2 characters tendo sinergia com os ã.

 

Ajuda pls ><

Postado
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  :) .

Postado

Compreendo. Mas alguns dos "ã" ou "á" digitados viram 2 caracteres por exemplo, como eu faria para trabalhar com isso?

O problema é a codificação do console, tente executar o código que mandei e entendera do que se trata. Aliás, qual seu compilador/IDE?

Postado

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?

 

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...