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.

Usando isDigit para encontrar caracteres en C++

Tratando de averiguar cómo puedo usar isDigit para ignorar cada caracter excepto x, X, e, E dentro de una cadena. Como puedes ver a continuación, estoy haciendo duodecimal a decimal con x igual a 10 y e igual a 11 (sin distinguir mayúsculas y minúsculas). Tengo problemas con cin.ignore(). La salida debería ser 36. La cadena duo debería leer 3 y luego 0 y negar el resto.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para ignorar cualquier caracter excepto x, X, e y E dentro de la cadena, puede modificar la condición else-if para los caracteres no numéricos de la siguiente manera:

    “`c ++
    else if (duo.at(i) != ‘x’ && duo.at(i) != ‘X’ && duo.at(i) != ‘e’ && duo.at(i) != ‘E’) {
    continue;
    }


    Esto omitirá todos los caracteres no x, X, e y E y continuará el bucle para la siguiente iteración. No es necesario usar `cin.ignore()` en este caso. El código actualizado debería verse así: ```c ++ #include <cmath> #include <iomanip> #include <iostream> #include <limits> #include <string> using namespace std; int main () { using str_t = std::string::size_type; str_t idx = 0; int decValue = 0; string duo = "30-something"; while (isspace(duo.at(idx)) && idx < duo.length ()) { idx ++; } for (std :: string :: size_type i = idx; i <duo.length (); ++i) { decvalue * = 12; if (isdigit (duo.at(i))) { decvalue + = duo.at(i) - '0'; } else if (duo.at(i) == 'x' || duo.at(i) == 'x') { decvalue + = 10; } else if (duo.at(i) == 'e' || duo.at(i) == 'e') { decvalue + = 11; } else if (duo.at(i)! = 'x' && duo.at(i)! = 'x' && duo.at(i)! = 'e' && duo.at(i)! = 'e') { continuar; } } cout << decvalue << endl; return 0; }

    la salida será 36. ();=”” ++i)=”” {=”” decvalue=”” *=”12;” if=”” (isdigit=”” (duo.at(i)))=”” {=”” decvalue=”” +=”duo.at(i)” -=”” ‘0’;=”” }=”” else=”” if=”” (duo.at(i)=”=” ‘x’=”” ||=”” duo.at(i)=”=” ‘x’)=”” {=”” decvalue=”” +=”10;” }=”” else=”” if=”” (duo.at(i)=”=” ‘e’=”” ||=”” duo.at(i)=”=” ‘e’)=”” {=”” decvalue=”” +=”11;” }=”” else=”” if=”” (duo.at(i)!=’x’ &&=”” duo.at(i)!=’X’ &&=”” duo.at(i)!=’e’ &&=”” duo.at(i)!=’E’ )=”” {=”” continuar;=”” }=”” }=”” cout=”” <<=”” decvalue=”” <<=”” endl;=”” return=”” 0;=”” }=”” “`=”” la=”” salida=”” será=””></duo.length (); ++i) {
    decvalue * = 12;

    if (isdigit (duo.at(i))) {
      decvalue + = duo.at(i) - '0';
    }
    
    else if (duo.at(i) == 'x' || duo.at(i) == 'x') {
      decvalue + = 10;
    }
    
    else if (duo.at(i) == 'e' || duo.at(i) == 'e') {
      decvalue + = 11;
    }
    
    else if (duo.at(i)! = 'x' && duo.at(i)! = 'x' && duo.at(i)! = 'e' && duo.at(i)! = 'e') {
      continuar;
    }
    

    }
    cout << decvalue << endl;
    return 0;
    }
    “`

    la salida será 36.>

Comments are closed.