Ir ao conteúdo
  • Cadastre-se

Alexsandro Gomes

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

3
  1. @vangodp SO: Debian 9 stretch IDE: Geany fiz o que você disse mudei a codificação do terminal para 1252, não mostra mais o interrogação bugado, mostra o à no primeiro byte do ç e no segundo mostra § o problema é que o ç ocupa duas posições em uma string e esse esta sendo o problema porque preciso passar caracter por caracter de uma string e manipular esse caracter, mas não funciona porque ao contar quantos caracter há na string mostra 1 a mais q no caso é o ç que ocupa dois espaços fiz testes sem ç e o tamanho da string é real, ou seja o problema esta em armazenar ç... em uma string o ç ocupa duas posições na string a posição 1 à e a posição 2 //DESSA MANEIRA O Ç É MOSTRADO PERFEITAMENTE string str = "açucar"; int nc = strlen(str.c_str()); cout << nc; for(int a=0;a<nc;a++){ cout << str[a]; } //DESSA MANEIRA MOSTRA à E § string str = "açucar"; int nc = strlen(str.c_str()); cout << nc; for(int a=0;a<nc;a++){ cout << str[a] << endl;//apenas acrescentei o endl } //note que no o tamanho da string é 7 pois o ç ocupa dois espaços na string //se escrever acucar o tamanho passa a ser 6 adicionado 31 minutos depois acabei de resolver, o problema é que o geany(ide) salva meu arquivo com codificação utf-8 eu mudei a codificação do documento pelo geany para windows 1252 ocidental, e esta funcionando perfeitamente, o ç esta ocupando apenas um espaço na string, valeu pela ajuda @vangodp
  2. boa tarde gente, estou com um probleminha aqui num codigo que estou codando, o que aconte é o seguinte, o ç, caracteres com acento e outros caracteres especiais ocupam dois bytes em uma string, quando eu tento trabalhar com a posição onde esta o ç... na string me retorna coisas estranhas e não o ç... exemplo: string str = "açucar"; cout << str[0] << endl; //saida a cout << str[1] << endl; //erro cout << str[2] << endl; //erro cout << str[3] << endl; //saida u decidi colocar o byte 1 e 2 dentro de um arquivo de texto e depois ler o conteudo do arquivo, o resultado foi o ç codigo: string str = "açucar"; fstream arqq; arqq.open("temp",ios::out); arqq << str[1] << str[2] ; arqq.close(); string caracter; arqq.open("temp",ios::in); if(arqq.is_open()){ string linha; caracter = "";//zera global while(getline(arqq,linha)){ //cout << linha << endl; caracter+=linha; } arqq.close(); } cout << ">" << caracter << "<" << endl; dai coloquei dentro do arquivo somente o byte 1, o mesmo codigo de cima só mudei a linha arqq << str[1] << str[2]; para arqq << str[1]; , com isso feito o resultado não é o ç e um interrogação bugado, mas dentro do arquivo abrindo o arquivo "temp" pelo gedit ele mostra \C3 e mostra um erro de codificação dai eu mudo para Ocidental ISO 8859-1 e me mostra isso à quando abro o arquivo com o geany me mostra à isso logo de cara nem pede pra mudar codificação e quando eu faço esse procedimento com o byte 2 acontece o mesmo mas com os caracteres \A7 § o que eu quero e que quando inserir o byte 1 no arquivo insira \C3 e quando ler o arquivo não mostre um interrogação bugadom, quero que mostre \C3, com isso poderei fazer uma comparação assim ó if(caracter=="\C3"){ cout << "sucesso" << endl; } mas ta difícil de fazer isso, é como se o if não conseguisse interpretar \C3 ou o fstream nao consegue ler somente \C3, alguem consegue me ajudar com isso?

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!