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é esta cadena no se convierte a entero?

Estoy tratando de convertir la cadena ‘r’ a un entero (‘num’), pero sigue devolviendo 0. Nota: Cuando devolvía la cadena, la respuesta (número invertido) era correcta. Mi código se ve así:

string n, r = "";
cin >> n;

for (int i = n.length(); i >= 0; i--)
{
    r += n[i];
}

int num;

istringstream(r) >> num;

cout << num << endl;
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La razón por la que devuelve 0 es que el bucle itera desde n.length() hasta 0, inclusivo. Esto significa que el último carácter de la cadena, que debería ser el primer dígito del entero, no se está incluyendo en la cadena invertida. Para solucionar esto, debes cambiar la condición del bucle a i > 0 en lugar de i >= 0:

    string n, r = "";
    cin >> n;
    
    for (int i = n.length() - 1; i >= 0; i--)
    {
        r += n[i];
    }
    
    int num;
    
    istringstream(r) >> num;
    
    cout << num << endl;
    

    Al hacer esto, el bucle iterará desde n.length()-1 hasta 0, e incluirá el último carácter de la cadena.

Comments are closed.