PDA

Visualizza la versione completa : [c++] Vettori di caratteri


SkOrPiOn`87
07-03-2004, 18:39
Ciao, facendo scorrere un file con getline e memorizzando un'intera riga dentro il vettore di catarreri, come posso fare a separare tutti i caratteri\numeri quando si presenta un spazio, considerando he il file è formato cosi:


<id numeri> <catteri> <caratteri> <numeri> <caratteri> <numeri>

A me andrebbe anche bene mettere tutti questi dati in variabili separate...

:ciauz:

iguana13
07-03-2004, 19:59
La funzione 'int strchr(const char *str, char chr)' che trovi in <string.h> restituisce la prima occorrenza del carattere char nella stringa str.

La funzione 'int atoi(const char *str)' in <stdlib.h> trasforma la stringa str in un intero.

Se usi strchr con come secondo argomento uno spazio, riesci a separare le parole e con atoi trasformi i numeri in numeri.

andypower
14-03-2004, 17:17
Fotresti utilizzando la <fstream.h> in un sottoprogramma inizializzare un flusso di lettura da file e leggere diverse variabili ad esempio:

#include <iostream.h>
#include <fstream.h>

const int N = 10;

void leggiFile(string caratteri[N], int numeri[N]);

void main () {
string caratteri[N];
int numeri[N];
leggiFile(caratteri, numeri);
}

void leggiFile (string caratteri[N], int numeri[N]) {
ifstream leggi ("nomeFile.txt"); /*quì inizializzi il flusso di lettura, dal file che si chiama nel nostro caso nomeFile.txt*/
int i = 0;
while ((leggi >> caratteri[i]) && (i < N)) { /*il while andrà avanti finchè troverà caratteri da leggere, si ferma quando la variabile i raggiunge il valore massimo fissato all'array o quando non c'è più nulla da leggere dal file*/
leggi >> numeri[i];
i++;
}
leggi.close(); //chiusura del flusso di lettura
return;
}

Ciauz! :metallica

SkOrPiOn`87
14-03-2004, 18:38
si ma io non posso sapere quale è il numero dei caratteri, quindi non posso enanche sapere quando dovrebbe fermrsi... o sbaglio?

andypower
14-03-2004, 18:51
In c++ usi il tipo stringa e quindi non ti importa dei caratteri, come quando ad esempio dichiari una variabile di tipo
string s;

e usi una

cin >> s;

per acquisire una serie di caratteri alfanumerici non c'è bisogno che tu conosca di quanti caratteri è formata, la cin e nel nostro caso la funzione leggi >> caratteri si fermeranno come trovano uno spazio o un invio, quindi un accapo. E' diverso dal c in cui dovevi dichiarare un array di charatteri di dimensioni fissate ad esempio char s[N] di cui N era la massima dimensione e non dovevi sforare, con il tipo string non hai di questi problemi..
Ciauz!! :ciauz:

SkOrPiOn`87
14-03-2004, 19:18
io sto parlandodi vettori dicaratteri, volevo farlo con questo, in quanto la classe string non l'ho ancora studiata...

andypower
14-03-2004, 19:26
ho capito, si dovrebbe riadattare il codice che ti ho scritto prima per poterlo usare con variabili di tipo char ma ora devo staccare cmq puoi provarci tu e secondo me non devi usare la getline che preleva una linea intera, cioè si ferma solo quando trova un invio ma una getchar() oppure la funzione cin >> valore;

Ora devo scappare byezzz! :metallica

ericciardi
15-03-2004, 11:54
Ciao, studiati questa funzione che fa proprio al caso tuo:
char *strtok( char *strToken, const char *strDelimit );

bye :metallica

Loading