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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  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 1,865 veces)
@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


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

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

Loretz

Desconectado Desconectado

Mensajes: 117


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
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


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

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



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
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


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

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

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 25,190 Último mensaje 12 Enero 2011, 09:41 am
por leogtz
pasar/llamar vector a una funcion
Programación C/C++
estivinho 1 2,050 Ú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 3,043 Último mensaje 30 Mayo 2014, 08:20 am
por eferion
Ayuda devolver un vector de una funcion
Programación C/C++
kur79 1 2,078 Último mensaje 28 Octubre 2014, 19:07 pm
por avesudra
c++ | Funcion que reciba vector STL
Programación C/C++
inewcl 5 2,276 Último mensaje 7 Noviembre 2016, 21:46 pm
por inewcl
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines