Eliminare un carattere specifico da una stringa

di il
6 risposte

Eliminare un carattere specifico da una stringa

Salve a tutti, questo è il mio primo post spero di che sarò chiaro.
Ho bisogno di un aiuto per un piccolo programma che sto sviluppando nel linguaggio C++, sono inceppato nel problema di eliminare un carattere specifico da una stringa.
la stringa rappresenta un numero e la lettera x alla fine (riguarda il coefficiente di un equazione! ).
Faccio un esempio:
1234x
per tradurre il una stringa contenente solo numeri in una variabile int uso questa funzione

#include ..
#include ..
using namespace std;

[b]double traduttore(string prova)
{
    stringstream ss(prova);
    double s_to_i;
    ss >> s_to_i;
    return s_to_i;
}[/b]

int main()
{
//e poi la dichiaro così
int i;
i=traduttore(b);
}
però per poterla tradurre non deve esserci la x...
Quindi come faccio a eliminarla senza usare il procedimento troppo lungo con length() poi erase()?

P.S. nel caso può esservi utile uso code::block e intendo rimanere nel linguaggio C++

6 Risposte

  • Re: Eliminare un carattere specifico da una stringa

    Il parametro della funzione dovrebbe essere un riferimento costante a std::string.

    Comunque basta un [CODE] double traduttore(const string& s) { stringstream ss { { s.begin(), s.end() - 1 } }; double s_to_d; ss >> s_to_d; ... }
  • Re: Eliminare un carattere specifico da una stringa

    Scusami ma ho iniziato a programmare in C++ solo da qualche mese, non ho capito cosa vuol dire quando hai detto
    dovrebbe essere un riferimento costante a std::string
    , e poi che vuol dire
     (const string& s) 
    Non ho ancora capito la differenza fra una variabile di tipo "const"
  • Re: Eliminare un carattere specifico da una stringa

    A parte quello che ti è stato detto, il codice dovrebbe comunque funzionare ma fai un po' di confusione tra i tipi.

    Perché nel main utilizzi int e la funzione restituisce un double?

    Se devi avere un double allora nel main devi scrivere
    
    double d;
    d=traduttore(b);
    
    In ogni caso, NON è necessario eliminare la x dalla stringa perché la conversione (non traduzione) si ferma automaticamente prima della x.
  • Re: Eliminare un carattere specifico da una stringa

    oregon ha scritto:


    A parte quello che ti è stato detto, il codice dovrebbe comunque funzionare ma fai un po' di confusione tra i tipi.

    Perché nel main utilizzi int e la funzione restituisce un double?

    Se devi avere un double allora nel main devi scrivere
    
    double d;
    d=traduttore(b);
    
    In ogni caso, NON è necessario eliminare la x dalla stringa perché la conversione (non traduzione) si ferma automaticamente prima della x.
    Ah si, nel programma originale avevo scritto bene, quando l'ho scritto qui però ho sbagliato e ho messo int, grazie per avermi fatto notare l'errore e grazie per l'informazione; mi sei stato di grande aiuto
  • Re: Eliminare un carattere specifico da una stringa

    oregon ha scritto:


    A parte quello che ti è stato detto, il codice dovrebbe comunque funzionare ma fai un po' di confusione tra i tipi.

    Perché nel main utilizzi int e la funzione restituisce un double?

    Se devi avere un double allora nel main devi scrivere
    
    double d;
    d=traduttore(b);
    
    In ogni caso, NON è necessario eliminare la x dalla stringa perché la conversione (non traduzione) si ferma automaticamente prima della x.
    ma la conversione converte anche dei segni in iniziali? cioè se io ho la stringa -123x dopo essa diventa -123? o perde il segno?
  • Re: Eliminare un carattere specifico da una stringa

    Certo che tiene conto del segno. Ma perché non provi?
Devi accedere o registrarti per scrivere nel forum
6 risposte