es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué mi código no me permite ingresar valores en una variable de tipo string con otras entradas de usuario para otras variables? C++

Estoy tratando de crear un programa que inserte una frase en otra frase en un punto determinado por el usuario. Sin embargo, cuando intento obtener las entradas de cada parámetro, las dos frases y el lugar donde se debe insertar la otra frase, solo puedo ingresar la entrada para el primer parámetro solicitado y luego el resto del código se ejecuta sin la entrada de los otros dos parámetros, y no estoy seguro de por qué ocurre esto en mi código. Mi código está adjunto a continuación.

“`cpp
#include <iostream>
#include <string>
#include <cstring>

using namespace std;

int main() {
string mystr; // Declaración original
string substrToBeInserted; // Frase a ser colocada en la declaración original
int positionToInsertAfter; // Valor entero en el array de cadenas donde se debe colocar la otra declaración

<pre><code>cout << endl << "Por favor ingrese su declaración" << endl;
cin >> mystr;
cout << endl << "Por favor ingrese su declaración a ser insertada" << endl;
cin >> substrToBeInserted;
cout << endl << "Por favor ingrese dónde se va a insertar su declaración" << endl;
cin >> positionToInsertAfter;

mystr = mystr + mystr[positionToInsertAfter] + substrToBeInserted;
cout << mystr;

return 0;
</code></pre>

}
“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema en tu código está en las instrucciones cin. Cuando un usuario introduce una cadena con espacios, cin solo toma la primera palabra como entrada e ignora el resto. Para solucionar este problema, puedes utilizar la función getline en lugar de cin.

    Reemplaza:
    cin >> mystr;
    cin >> substrToBeInserted;
    cin >> positionToInsertAfter;

    Con:
    getline(cin, mystr);
    getline(cin, substrToBeInserted);
    cin >> positionToInsertAfter;

    Esto permitirá al usuario ingresar una oración completa para los dos parámetros de frase.

Comments are closed.