JLima
(usa Ubuntu)
Enviado em 29/10/2012 - 02:23h
Olá a todos!
Tenho estudado C++ usando o Sr Google já a algum tempo porém não consegui resolver o seguinte problema.
Em meu programa de estudos tenho um if com dois ponteiros que são comparados e caso o conteúdo deles forem os mesmos (o caracter "é") será impresso o caracter "é" no loop e assim toda a string ("caracteresAcentuados: \"áéàèüÜç\""), porém não consigo que a rotina execute como pretendido, o máximo que consigo é imprimir: caracteresAcentuados: "". Todos os caractere acentuados desaparecem.
Há alguma solução como o # -*- coding: utf-8 -*- do Python?
Eu experimentei primeiro fazer duas rotinas um pouco semelhantes só para testar se os ponteiros iriam influenciar no resultado, porém não houve qualquer problema.
Ficarei muito grato a quem puder me indicar links, arquivos, tutoriais e explicações aqui no Vol.
Meu inglês é muito pobre. Uso o tradudor do Goolge.
Segue abaixo o meu código.
Grato a Todos!
#include<iostream>
// #include <cctype> Não fez diferença
using namespace std;
int main()
{
const char string[]=
{
"caracteresAcentuados: \"áéàèüÜç\""
};
const char *p_string = string;
cout << "\n\t";
int n = sizeof(string)/sizeof(const char);
for (int i = 0; i < n; i++)
{
//Imprime a string "caracteresAcentuados: \"áéàèüÜç\""
cout << *(string+i) ;
}
cout << "\n\n\t";
for (int j = 0; j < n; j++)
{
//Imprime a string "caracteresAcentuados: \"áéàèüÜç\""
cout << *(p_string+j) ;
}
cout << "\n\n\t";
const char str_e[]= {"é" };
const char *p_str = string;
//Penso que deveria imprimir o
//mesmo que nos exemplos anteriores
while(*p_str != '{TEXTO}') //Obs. Meu caracter de fim de string está sendo alterado para "{TTEXTO}"
//quando eu envio para o Vol. Quem for testar meu código deve fazer
//a devida alteração no while. Não sei resolver isto.
{
if( isprint (*p_str) )
{
if(*p_str == *str_e )
{
cout << "é";
}else
{
cout << *p_str;
}
}
*p_str++;
}
cout << "\n\n";
}