|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
[C++]Eliminare punteggiatura
Codice:
void filter(string * s)
{
string el("().;");
string::iterator It = el.begin();
while(It != el.end())
{
string::size_type pos = 0;
while(pos = s->find_first_of(*It, pos) != string::npos) {
s->erase(pos, 1);
}
}
}
__________________
Gnu/Linux User
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2000
Città: dintorni di Seregno (MI)
Messaggi: 312
|
Magari It++ nel primo ciclo while potrebbe essere utile...
__________________
powered by GNU/Linux [ Debian Sid ] |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
Quote:
va sempre il loop
__________________
Gnu/Linux User
|
|
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
first_find_of cerca il primo carattere tra quelli presenti in una stringa, non occorre quindi che lo
chiami con ogni carattere (tra l'altro lui si aspetta una stringa, non un carattere). Il ciclo piu' esterno e' quindi inutile (usa find_first_of(el,pos)) Inoltre erase esiste in due versioni: con un parametro per eliminare un solo carattere o con due, dove passi due iteratori. Il tuo '1' quindi viene interpretato come un iteratore e non una lunghezza, e probabilmente l'errore sta li'. Infine queste funzioni operano con iteratori e non pos_type, quindi devi dichiarare il pos come Codice:
string::iterator pos = s->begin() (suggerimento: attivare sempre il massimo livello di warning nel compilatore, questi problemi te li segnala di solito) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:21.



















