Ver Mensaje Individual
  #1  
Antiguo 26-10-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Reputación: 14
aguml Va por buen camino
¿cin en modo binario?

Bueno pues sigo trasteando con el tema del cifrado y ahora estoy con el cifrado Cesar y tengo esto:
Código PHP:
//---------------------------------------------------------------------------

#include <iostream>

using namespace std;

string CesarEncript(string entradaint desplazamiento);
string CesarDecript(string entradaint desplazamiento);
//---------------------------------------------------------------------------

int main(int argccharargv[])
{
   
char aux[1024];
   
string desencriptado;
   
string encriptado;

   
cout << "Introduce el texto a encriptar: ";
   
cin.getline(aux,1023,'\n');
   
desencriptado=aux;

   if((
encriptado=CesarEncript(desencriptado,5)) != ""){
      
cout << encriptado << endl;
      
desencriptado="";
      if((
desencriptado =CesarDecript(encriptado,5)) != ""){
         
cout << desencriptado << endl;
      }else{
         
cout << "Caracteres no validos en el texto a desencriptar" << endl;
      }
   }else{
         
cout << "Caracteres no validos en el texto a encriptar" << endl;
   }
   
cin.get();
   return 
0;
}
//---------------------------------------------------------------------------

string CesarEncript(string textoint desplazamiento)
{
   
int i,posInicial,posFinal;
   
string Letras="ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz1234567890ÁÉÍÓÚáéíóúÜü \".,:;-+*/=\\_<>¡!¿?|@#$%&()[]{}\'^ºª";
   
string final;

   for(
i=0;i<texto.length();i++){
      
posInicial Letras.find(texto.at(i));
      if(
posInicial 0){
         final=
"";
         break;
      }
      
posFinal = (Letras.length() + posInicial desplazamiento) % Letras.length();
      final.
append(LetrasposFinal1);
   }
   return final;
}

string CesarDecript(string textoint desplazamiento)
{
   
int i,posInicial,posFinal;
   
string Letras="ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz1234567890ÁÉÍÓÚáéíóúÜü \".,:;-+*/=\\_<>¡!¿?|@#$%&()[]{}\'^ºª";
   
string final;

   for(
i=0;i<texto.length();i++){
      
posInicial Letras.find(texto.at(i));
      if(
posInicial 0){
         final=
"";
         break;
      }
      
posFinal = (Letras.length() + posInicial desplazamiento) % Letras.length();
      final.
append(LetrasposFinal1);
   }
   return final;

El problema que tengo es que hay caracteres que al usar find no los encuentra y creo que es porque al hacer cin.getline lee texto y no lee en binario. ¿por que creo esto? porque cuando estuve trasteando con el vigenese vi que al abrir el archivo en modo texto fallaba pero al abrirlo en modo binario funcionaba bien. ¿hay alguna manera de hacer que cin me lea el texto en binario? creo que con eso se solucionaria y he estado buscando info y lei que con cin.read se puede pero no encuentro ningun ejemplo que me permita leer del buffer de entrada con read. ¿podeis ayudarme?
Responder Con Cita