Ok amigo, es lo que pasa cuando uno habla desde el desconocimiento, que puede soltar burradas para los oidos de los que realmente saben jejeje.
Ahora si que me funciona esa parte pero ahora tengo otro problema. Con mi codigo, si le digo que quiero descifrar la letra 'ñ' con un desplazamiento de 5 me tendria que mostrar la 'ñ' pero sin embargo me muestra el simbolo matematico '±' incluso teniendo la linea
setlocale(LC_ALL, ""); que se supone que es para que me muestre los caracteres especiales ¿no? Con lo que he leido de tu contestacion entiendo que con
SetConsoleCP(GetACP()); cambio la pagina de codificacion de la consola pero eso hace que el caracter 'ñ' valga 241 mientras que si miro la tabla ascii extendido veo que vale 145 y que el 241 es realmente el que me está mostrando. ¿tengo que cambiar tambien algo de la salida de consola para que me muestre los caracteres correctamente? ¿puedes ayudarme con esto ultimo?
Edito:
Lo he solucionado esto último después de buscar mucho ya que al usar SerConsoleOutputCP (GetACP ()); me pasaba que al dar a alguna tecla especial como por ejemplo la Ñ no me imprimía esta en consola y encontré este enlace:
http://es.comp.lenguajes.c.narkive.c...mostrando-enes
Y con esa ayuda me cree esta funcion:
Código C++:
Ver originalstring StringToOem (string cadena)
{
char *aux=new (nothrow) char [cadena.length ()];
if (aux != NULL){
CharToOem (cadena.c_str (),aux);
cadena=aux;
delete aux;
}else {
cadena="";
}
return cadena;
}
Luego de obtener la cadena cifrada hago:
Código C++:
Ver originalencriptada=StringToOem (encriptada);
Y ya la muestro y se ve perfecta.
He probado también a cambiar la fuente de la consola y también funcionaba pero quería saber que opción es más limpia y por cual optarIan.