PDA

Visualizza la versione completa : [c++] come faccio a ripulire.. questa stringa?


freetom
27-07-2009, 23:09
1939/01/28 BA 76 55 48 85 71

fino ad avere solo... i numeri... separati da virgola?

76,55,48,85,71

THANKSSS


:ciauz:

frankitt
28-07-2009, 10:48
In generale tu hai sempre delle stringhe in questo formato?
Io non so usare il c++, ma conoscendo un p il c ti posso dire che basterebbe spostare il puntatore nella locazione dopo le lettere BA, e poi scorrere il vettore e sostituire lo spazio con la virgola... non so se mi sono spiegato

oregon
28-07-2009, 14:41
Usi la funzione

memcpy

per copiare la parte finale della stringa all'inizio (includendo il terminatore null).

E poi, usando un ciclo e un puntatore agli spazi nella stringa, assegni il carattere ','

A te la scrittura del codice ...

freetom
28-07-2009, 20:14
Ho creato un secondo file estrazioni2.txt contenente solo i numeri voluti... separati da virgola... :zizi: ma con ancora qualcosa da ottimizzare... ovvero...

il file qualcosa di questo tipo:

,58,22,47,49,69














,18,77,33,62,19














,68,65,41,28,67

ecc...

io dovrei:

1) ANNULLARE i 15 spazi tra una combinazione e l'altra...
2) RIMUOVERE la virgola iniziale
3) AGGIUNGERE alla fine di ciascuna combinazione un ";"

GRAZIE infinite a chi mi da una mano in questa pulizia... finale... :mame:


:ciauz:

oregon
28-07-2009, 20:16
E come si fa se non si vede il codice che hai usato per generare quell'output?

freetom
28-07-2009, 20:20
//prova sostituzione spazi..........

//string subs;
const char* ptr;
char* found;
int start = 0;

ptr = subs;
ptr = (char*) ptr;
found = (char*)ptr;

while((found = strpbrk(found, " ")) != NULL) {
*found = '-';
found = (char*) ptr;
}


//----------------------------------
//prova seconda sostituzione...

//string subs;
const char* ptr2;
char* found2;
int start2 = 0;
//cout << "Inserire il testo: ";
//cin >> subs;
ptr2 = subs;
ptr2 = (char*) ptr2;
found = (char*)ptr2;

while((found2 = strpbrk(found, " ")) != NULL) {
*found2 = '\n';
found2 = (char*) ptr2;
}

while((found2 = strpbrk(found, "-")) != NULL) {
*found2 = ',';
found2 = (char*) ptr2;
}


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

:sbav:

oregon
28-07-2009, 20:30
Scusa ... :confused: ... ma dove scrivi su disco?

freetom
28-07-2009, 21:58
//....

ofstream pippo;
pippo.open("estrazioni2.txt", ios::out);

pippo << ptr2;

//.....

:ciauz:

oregon
28-07-2009, 22:15
Scusa ma non riesco assolutamente a seguire il tuo codice ... ti avevo suggerito una semplice

memcpy

seguita da un semplice ciclo for ma tu hai usato altro e, ripeto, non capisco perche' ...

freetom
29-07-2009, 17:10
con memcpy per vedere come funziona ma non ci sno riuscito...
Mi sembra di aver capito solo... che questa funzione copia parte della
stringa o del file ma non so assolutamente come utilizzarla...
per il mio scopo... :master:

Loading