Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    37

    [C++] Problema con ciclo for

    Ciao a tutti!
    Ho un problema con un ciclo for. In pratica il codice che ho scritto dovrebbe leggere un file di testo ed estrarre dei link per poi visualizzarli uno alla volta. Ho risolto la questione dell'estrazione dei link con le librerie boost regex. Ecco il codice della parte interessata:

    codice:
    fstream lista("list",ios::in);
    string line , link_page;
    
    	while(lista.good()){
    		getline(lista, line);
    		link_page += line;
    		}
    
    lista.close();
    
    list<string> lb_link;
    
    	regex pattern("http://\\w{8}.linkbucks.com");
    		
    	sregex_token_iterator end;
    
    	for (sregex_token_iterator link(link_page.begin(), link_page.end(), pattern); link != end; ++link){
    		lb_link.push_back(*link);
    		}
    
    		lb_link.unique();
    
    int i;
    
    for (i=0;i<lb_link.size();i++){
            cout << lb_link[i] << endl;
            }
    Utilizzo visual c++ e gli errori che ricevo in fase di compilazione sono:

    codice:
    warning C4018: '<': errata corrispondenza tra signed e unsigned
    riferito all'ultimo ciclo "for (i=0;i<lb_link.size();i++){"

    codice:
    error C2676: '[' binario: 'std::list<_Ty>' non definisce questo operatore né una conversione in un tipo che può essere accettato dall'operatore predefinito
    riferito all'espressione all'interno dell'ultimo ciclo "cout << lb_link[i] << endl;"

    Come posso risolvere? Grazie a tutti in anticipo!

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    std::list non ha l'operatore []

    cambiala con std::vector
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Quanto al warning, usa
    codice:
    std::size_t i;
    invece di
    codice:
    int i;
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    37
    Grazie a entrambi!
    Per quanto riguarda unique() invece? Lo uso perchè nel file in cui cercare i link sono presenti più link uguali tra loro mentre a me ne serve solo uno di ognuno. unique() però non posso usarlo con vector. Esiste qualcosa si analogo con vector?

  5. #5
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Se l'unico scopo di quell'operatore [] era di visualizzare il contenuto della lista, puoi risolvere così:

    codice:
    ...
    
    typedef std::list<string>::iterator list_iterator;
    list_iterator start =  lb_link.begin(), stop = lb_link,end();
    
    while ( start != stop) {
        cout << *start << endl;
        ++start;
    }
    così puoi usare list e il suo metodo unique()
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    37
    Grazie =)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.