Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    [c++] Come evidenziare doppie o multiple occorrenze in una stringa?

    [codice]

    cout << "VERIFICA1 COMB. INTERA:\n";
    cout << combinazioneintera;
    cout << "\n";

    cout << "LUNGHEZZA:\n";
    cout << combinazioneintera.size();
    cout << "\n";


    int ultimocarattere=combinazioneintera.size();

    //provo a togliere la virgola finale...

    cout << "STRINGA PULITA DALL'ULTIMO CARATTERE (virgola):\n";
    //cout << combinazioneintera.erase(5,2);
    //cout << combinazioneintera;
    string p1 = combinazioneintera.substr(ultimocarattere-1,2);
    //cout << p1;
    cout << combinazioneintera.erase(ultimocarattere-1,2);

    cout << "\n";

    cout << "CANCELLAZIONE DELLA STRINGA CON DOPPIONI...";

    //qui dovrei in qualche modo verificare quanto in oggetto ed
    //eliminare la stringa che verifica la presenza di una o più
    //occorrenze uguali nella stessa...
    //(es. se una comb. creata sarà 1,1,4,7,8,4,9,13,21 questa andrà eliminata)
    //---------------------------------------------------------

    [codice]

    per i moderatori:
    Il tag [cod] o [codice] non mi funzia...
    Se potete provate a mettere voi la formattazione [codice] corretta...
    Sto usando google chrome. Se potesse dipendere da quello.

    tnx
    Buon Ferragosto a tutti/e

  2. #2
    Puoi usare questa funzione passandole come replace una stringa vuota (""):
    codice:
    //Replaces all the instances of search with replace in string; returns the number of substitutions done
    unsigned int ReplaceString(std::string & string,const std::string & search,const std::string & replace)
    {
    	unsigned int ret=0;
    	for(std::string::size_type pos=string.find(search);pos!=string.npos;ret++,pos=string.find(search,pos))
    	{
    		string.replace(pos,search.length(),replace);
    		pos+=replace.length();
    	}
    	return ret;
    }
    .
    Ah, in questo forum il tag per inserire codice è [code] ... [/code].
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Grazie mille!



    ps:Ma questa funzione si occuperebbe solo.. di eliminare la stringa individuata... ma non di verificarne l'eventuale eliminabilità... in quanto avente stessi valori presenti più volte vero? o mi sbaglio? e fa tutto..?

  4. #4
    Originariamente inviato da MItaly
    codice:
    ...
    	for(std::string::size_type pos=string.find(search);pos!=string.npos;ret++,pos=string.find(search,pos))
    ...
    non è std::string::npos ?

    ciao
    sergio

  5. #5

    Re: Grazie mille!

    Originariamente inviato da freetom
    ps:Ma questa funzione si occuperebbe solo.. di eliminare la stringa individuata... ma non di verificarne l'eventuale eliminabilità...
    Be', la funzione restituisce il numero di occorrenze sostituite, per cui se restituisce 0 sai che non è stato eliminato niente... ma forse non ho capito esattamente cosa intendi. :master:
    Originariamente inviato da mondobimbi
    non è std::string::npos ?
    È indifferente; qui string non è std::string, ma un'istanza di essa passata come parametro, con cui comunque posso accedere ai membri statici con l'operatore punto. Nel mio codice originale non c'era questa ambiguità, visto che string era di tipo std::_tcstring, ossia std::basic_string<TCHAR>.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.