Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   ¿cin en modo binario? (https://www.clubdelphi.com/foros/showthread.php?t=89266)

aguml 26-10-2015 18:06:38

¿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?

Ñuño Martínez 27-10-2015 17:30:31

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.

aguml 28-10-2015 22:43:23

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.

Ñuño Martínez 29-10-2015 11:36:36

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.

aguml 29-10-2015 11:52:57

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.


La franja horaria es GMT +2. Ahora son las 18:02:32.

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