¿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;
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:
Al hacer esto, el bucle iterará desde n.length()-1 hasta 0, e incluirá el último carácter de la cadena.