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?