Oppure

Loading
05/03/11 16:41
tommyprojects2011
Con questo codice estrapolo solo le righe del filedaestrapolare.txt con presenze=1° o presenze=0°

codice da ottimizzare:


#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
#include <iomanip>

#include<stdio.h>
#include<string.h>


using namespace std;

string intToString(int value) {
    stringstream ss;
    ss << value;
    return ss.str();
}

string floatToString(float value) {
    stringstream ss;
    ss << value;
    return ss.str();
}


int main (int argc, char *argv[]) {


    FILE *a=fopen("filedaestrapolare.txt","r");
    FILE *b=fopen("estrapolazione.txt","w");
    char buf[1024];
    
    while( fgets(buf,1024,a)) if(strstr(buf,"presenze:0°") || strstr(buf,"presenze:1°")   )     fputs(buf,b);
                    
                                       
                    getchar();
fclose(a);fclose(b);
     return 0;               
    }





Ottenendo ad esempio delle righe del tipo:

presenze:1°***combinazione:25***rs: 408 ra: 91 colpirimanenti: 317

io vorrei ottimizzare il tutto in modo da avere,secondo l'esempio..., solo...

25

ovvero sia dovrei estrapolare solo il pezzo della stringa compreso tra "combinazione:" e *

Come potrei modificare il codice soprastante per ottenere ciò?

Grazie infinite a chi me lo dis!

8-)
Ultima modifica effettuata da tommyprojects2011 05/03/11 16:42
aaa
05/03/11 19:08
lumo
ifstream input( "filedacuiestrapolare.txt" );
string line;
getline( input, line );
size_t pos1 = line.find( "combinazione:" );
size_t pos2 = line.find( '*', pos1 );
string estrapolato = line.substr( pos1, pos2 );

Non l'ho provato ma dovrebbe funzionare. Anche se a dir la verità non mi piace molto D:
aaa