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

    [c++] sono riuscito a leggere tutto il file ma...

    Io vorrei leggere solo determinate righe ovvero solo quelle con BA...

    codice:
    #include <iostream>
    using namespace std;
    int main (int argc, char *argv[])
    {
    //SPAZIO PER LETTURA FILE...
       
       FILE * pFile; 
       char string [1000]; 
    
       pFile = fopen ("estrazioni.txt" , "r"); 
       if (pFile == NULL) perror ("Errore"); 
         
       else { 
    while(!feof(pFile))
     { 
    fgets(string , 100 , pFile); 
    puts (string); 
    } 
    } 
    //--------------------------
    //cout << "Hello World!" << endl;
    cout << "Press ENTER to continue..." << endl; 
    cin.get();
    return 0;
    }
    Come potrei fare? Esiste un modo in c++ tipo per le espressioni regolari in php?

    Grazie


  2. #2
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225
    php lo fa per te, ma prima apre tutto il file.

    Ti conviene leggere tutto il file in una botta con fread e poi fare la scansione delle righe che ti interessano.
    ciao
    sergio

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326

    Re: [c++] sono riuscito a leggere tutto il file ma...

    Originariamente inviato da freetom
    Esiste un modo in c++ tipo per le espressioni regolari in php?
    Lo standard Posix prevede regex.h
    every day above ground is a good one

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

    ho provato a fare così....

    ad aggiungere dopo...

    fgets(string,100,pfil)

    questo cod:

    //-------prova espressione regolare

    const char *reg_espr = "[ ,.\\t\\n;:]" ; // Elenco dei caratteri separatori.
    // NOTA: l'apparato delle espressioni regolari considera il [[backslash]] come il
    // compilatore C++, quindi, ad esempio, il carattere '\n' va indicato con "\\n".

    regex rgx(reg_esp) ; // 'regex' è un'istanza della classe template
    // 'basic_regex' con argomento di tipo 'char'.
    cmatch match ; // 'cmatch' è un'istanza (predefinita) del templete
    // 'match_results' con argomento di tipo 'const char *'.
    const char *target = "BA" ;

    // Identifica tutte le parole di 'target' delimitate dai caratteri di 'reg_espr'.
    if( regex_search( target, match, rgx ) == true )
    {
    // Se sono presenti delle parole separate dai caratteri specificati.

    for( int a = 0 ; a < match.size() ; a++ )
    {
    string str( matches[a].first, matches[a].second ) ;
    cout << str << "\n" ;
    }
    }


    //----------------------------------

    ma mi da questo errore in fase di compilazione:

    27 C:\Dev-Cpp\leggererigaxriga3.cpp `regex' undeclared (first use this function)

    Come faccio ad includere la classe regex.h?

    THANKSSS


  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Devi includere l'header file regex.h, ammesso che il Dev abbia la libreria... come ti dicevo è standard POSIX, non so se il compilatore che usi ce l'ha, anche se è probabile...

    In ogni caso non capisco come stai cercando di usarla...
    every day above ground is a good one

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

    non non ce l'ha...

    ho cercato il file relativo nella dir include e nella dir di devc++ completa ma nulla...
    Dove posso prenderla? Ed è gratisse?

    Grazie!

    Per quanto riguarda il suo uso.. ho preso un es. da wikipedia e l'ho riadattato sostituendo il pezzo di testo da ricercare con il mio BA spero basti...


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.