Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-10-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
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
  #2  
Antiguo 27-10-2015
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Hasta donde yo sé, no, ya que (si no recuerdo mal, porque hace mucho que no manejo C++) "cin" es abierto antes de que comience el programa.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 29-10-2015 a las 11:30:52.
Responder Con Cita
  #3  
Antiguo 28-10-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
aguml Va por buen camino
El caso es que me han dicho que con wstring y wcin.getline se puede usar Unicode pero no veo la manera porque no para ni nada.
Responder Con Cita
  #4  
Antiguo 29-10-2015
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Es posible.

No sé si en Builder/Delphi van a hacer (o han hecho) lo mismo que van a hacer con Free Pascal 3, que a partir de esa versión todo el sistema (compilador, RTL, ...) asumirá UTF-8 como codificación por defecto, en lugar de ASCII-7 que es lo que hace ahora, por lo que ya no identificará como "binario" los textos en UNICODE.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #5  
Antiguo 29-10-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
aguml Va por buen camino
Yo tengo builder 6 pero creo recordar que a partir de la version 2007 usa WideString como estandar y al AnsiString lo dejan un poco de lado.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Binario a Texto gusspagano Varios 10 05-06-2013 21:19:37
decimal a binario luisito2011 C++ Builder 2 05-12-2011 04:43:08
Leer Binario con php marcos.ramos PHP 5 22-11-2010 22:20:38
Binario en string 3NK1 Varios 4 16-04-2009 01:10:31
Modo diseño y modo ejecución buildero_d OOP 3 11-09-2005 06:45:00


La franja horaria es GMT +2. Ahora son las 06:31:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi