Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [c++] Vettori di caratteri

    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...


  2. #2
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    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.

  3. #3

    #include <fstream.h>

    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

  4. #4
    si ma io non posso sapere quale è il numero dei caratteri, quindi non posso enanche sapere quando dovrebbe fermrsi... o sbaglio?

  5. #5

    Caratteri?

    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!!

  6. #6
    io sto parlandodi vettori dicaratteri, volevo farlo con questo, in quanto la classe string non l'ho ancora studiata...

  7. #7

    Capisco

    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

  8. #8
    Ciao, studiati questa funzione che fa proprio al caso tuo:
    char *strtok( char *strToken, const char *strDelimit );

    bye :metallica

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.