En la funcion despues de crear el string en el que guardare el texto uso nombredelstring.reserve(1000000);
Para tener espacio en el string.
Despues de guardar todo en el string uso
nombredelstring.shrink_to_fit();
Para ajustar el tamaño del string a sus necesidades reales.
El problema lo tengo despues de la llamada a la funcion en main cuando intento tomar datos por entrada con cin. Se me salta varios cin y no deja al usuario del programa introducir los valores.
El programa es muy sencillo. Lo pondre resumido.
Código
Suponí que era un error del buffer. Asique probe con cin.ignore(); Pero debe ser algun fallo de memoria o algo que no sé como solucionar.
string Funcion(string texto) { string textosalida; for (int vueltas =1; vueltas <256; ++vueltas) { textosalida += "\nDespues de este mensaje ves la opcion "; for (auto iter = texto.begin(); iter != texto.end(); ++iter) { textosalida += (*iter + vueltas); } } return textosalida; } int main() { string blabla; cout <<"bla bla"; getline(cin, blabla); string texto = Funcion(blabla); cout << texto; int guardar =4; //Aqui el problema: cout << endl << endl << "pulsa 1 para bla bla bla" <<endl; cin >> guardar; //Se salta el cin anterior y entra en el siguiente if sin razon logica aparente. if (guardar ==1) { cout << "Guardando en documento, pon el titulo" <<endl; //getline... } cin.get() return 0; }
En el ejemplo de meterle abc como texto a la funcion guarda lo siguiente en el string:
Despues de este mensaje ves la opcion abc
Despues de este mensaje ves la opcion bcd
Despues de este mensaje ves la opcion cde
...
Despues de este mensaje ves la opcion abc
Da 256 vueltas para mostrar todas las opciones posibles del texto cifrado para que ek usuario las mire y descubra cual era el texto original.
Por lo que el string puede ser enorme ya que va a multiplicar por 256 cualquier texto que introduzca el usuario.
A qué se debe el fallo?
Debería usar vectores de strings? O se puede hacer con un string?
Si necesitais el código completo, lo paso, pero poco más que eso es.
Como la salida es muy grande queria ponerle opcion para escribir en un documento de texto la salida y abrir el documento desde el programa para poder ver todas las posibilidades.