elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con funcion con vector.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con funcion con vector.  (Leído 799 veces)
@XSStringManolo
<svg/onload=alert()>
Colaborador
***
Desconectado Desconectado

Mensajes: 2.361


Turn off the red ligth


Ver Perfil WWW
Ayuda con funcion con vector.
« en: 29 Mayo 2019, 00:17 am »

Hola tengo un string que me tiene almacenada una cadena con varios caracteres.
Quiero tomar los caracteres de 6 en 6 y almacenar cada grupo de 6 caracteres en un vector de strings.
Quedandome vector[0] 6 caracteres, vector[1] 6 caracteres...
Si la cantidad de caracteres del string no es divisor de 6 puede que me quede por ejemplo en
vector[5] 2 caracteres. Entonces en ese caso debo rellenar ese ultimo string dentro del vector para que contenga 6 caracteres. Lo estoy intentando hacer de varias maneras distintas y de ninguna lo logro.
Esto es lo que estoy haciendo ahora y tampoco me fuciona:

Código
  1. int complemento =6;
  2. string cadenaDeCaracteres;
  3. string dividir6;
  4. int x = cadenaDeCaracteres.length();
  5. int z =0;
  6.  
  7. while (z<x)
  8. {
  9.   for (int i=0; i<complemento; ++i)
  10.   {
  11.   dividir6 + cadenaDeCaracteres[i];
  12.   }
  13.   complemento+=6;
  14.   vector.push_back(dividir6);
  15.   dividir6="";
  16. ++z;
  17. }
  18.  
  19. int a = vector.size();
  20.  
  21. while ((vector[a]).size() <6)
  22. {
  23. vector[a].append("0");
  24. }
  25.  

Ya me estoy liando la cabeza, me da errores de varias formas distintas.
estuve a prueba y error y no consegui sacar una funcion que haga lo que pido.
Es para un cifrado de binario a base64.
Gracias.


En línea

Loretz

Desconectado Desconectado

Mensajes: 116


Ver Perfil
Re: Ayuda con funcion con vector.
« Respuesta #1 en: 29 Mayo 2019, 08:16 am »

Te paso una solución que creo que podrás acomodar a tu caso:

Código
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <cstdlib>
  5.  
  6. int main()
  7. {
  8.    std::string cadena{ "Una cadena bastante larga que va a ser dividida en segmentos "
  9.                        "de seis caracteres cada uno, y lo que falte se completara con asteriscos." };
  10.  
  11.    // nuevo size de la cadena (multiplo de 6)
  12.    auto res = std::div(cadena.size(), 6LL); // calcula cociente y resto.
  13.    size_t newsize = 6LL * res.quot;
  14.    newsize += (res.rem) ? 6LL : 0;
  15.    cadena.resize(newsize, '*'); // de ser necesario se completa con asteriscos.
  16.  
  17.    // un vector de strings de 6 caracteres cada una:
  18.    std::vector<std::string> v;
  19.    for (auto i = 0LL; i < newsize / 6LL; ++i) {
  20.        v.push_back(cadena.substr(6LL * i, 6LL));
  21.    }
  22.  
  23.    // a ver...
  24.    for (const auto& i : v) {
  25.        std::cout << i << '\n';
  26.    }
  27. }


En línea

@XSStringManolo
<svg/onload=alert()>
Colaborador
***
Desconectado Desconectado

Mensajes: 2.361


Turn off the red ligth


Ver Perfil WWW
Re: Ayuda con funcion con vector.
« Respuesta #2 en: 29 Mayo 2019, 08:22 am »

Muchas gracias! Mirare como funciona en profundidad para saber como lo puedo hacer en mi caso.
En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 944



Ver Perfil
Re: Ayuda con funcion con vector.
« Respuesta #3 en: 29 Mayo 2019, 08:53 am »

Estaba mirando el problema antes de ver la respuesta anterior así que te dejo una alternativa a la de @Loretz con los operadores más básicos y con arrays dinámicos.
Código
  1. string cadena_original = "abcde0fghij1kl";
  2. size_t relleno = DIVISOR - (cadena_original.size() % DIVISOR);
  3. for(size_t i = 0; i < relleno; ++i)
  4. cadena_original += '0';
  5.  
  6. size_t num_subcadenas = cadena_original.size() / DIVISOR;
  7. string *vector_string = new string [num_subcadenas];
  8.  
  9. for(size_t i = 0; i < num_subcadenas; ++i)
  10. for(size_t j = 0; j < DIVISOR; ++j)
  11. vector_string[i] += cadena_original[i*DIVISOR+j];
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
@XSStringManolo
<svg/onload=alert()>
Colaborador
***
Desconectado Desconectado

Mensajes: 2.361


Turn off the red ligth


Ver Perfil WWW
Re: Ayuda con funcion con vector.
« Respuesta #4 en: 29 Mayo 2019, 09:36 am »

Me va perfecto YreX-DwX muchas gracias. Ahora solo me falta pasar los binarios a base 64. Cuando acabe el codigo lo comparto, aunque supongo que hay muchos por ahí. Los que yo vi no los entendia demasiado.

Edit: Poca operacion mucho texto plano. Jaja
https://pastebin.com/KRPnJ1gB
« Última modificación: 29 Mayo 2019, 12:00 pm por string Manolo » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Devolver un vector en una funcion
Programación C/C++
d00ze13 5 23,204 Último mensaje 12 Enero 2011, 09:41 am
por leogtz
pasar/llamar vector a una funcion
Programación C/C++
estivinho 1 1,268 Último mensaje 22 Noviembre 2012, 16:08 pm
por Ferno
Error al pasar un vector de una funcion a otra
Programación C/C++
loadenro 5 1,789 Último mensaje 30 Mayo 2014, 08:20 am
por eferion
Ayuda devolver un vector de una funcion
Programación C/C++
kur79 1 1,211 Último mensaje 28 Octubre 2014, 19:07 pm
por avesudra
c++ | Funcion que reciba vector STL
Programación C/C++
inewcl 5 1,158 Último mensaje 7 Noviembre 2016, 21:46 pm
por inewcl
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines