Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    11

    [C++] stringa su file

    Buongiorno, per prima cosa ho postato qui perchè ho visto altri topic inerenti al c++ e quindi ho pensato fosse le sez giusta, perdonatemi se ho sbagliato.
    Ho questo dubbio in un programma che sto facendo in c++:
    ho questo record
    codice:
    struct cds{ 	
    string nome_cd; 	
    int numero; 	
    string titolo[25]; 	
    string cantante[25]; 
    };
    ho bisogno delle stringhe perchè utilizzo degli spazi e quindi non andrei bene con il tipo char
    come faccio per salvare le stringhe in un file e per farmele successivamente leggere tramite un'altra void?
    ho provato con <<, ma una volta salvato, poi quando vado a leggere i valori da file tramite la funzione getline(FILE_lettura,record) mi mette tutto nel primo elemento del record.
    come potrei fare (magari utilizzando anche funzioni diverse) per salvare su file e poi riuscire a "mettere al proprio posto" ogni elemento??
    vi ringrazio. scusate se non è molto chiaro, sono ancora agli inizi!
    se è necessario posso postare anche il codice delle void che ho utilizzato per salvare e per leggere il file.

  2. #2
    Come mai usi le dichiarazioni
    codice:
    string titolo[25];
    string cantante[25];
    ? Quelle non sono stringhe, sono array di stringhe (di 25 elementi ciascuno).
    Comunque posta anche il codice per leggere e scrivere su file.
    Se state chiamando per i piedini mancanti,lasciate il vostro indirizzo,e i piedi di ricambio vi saranno consegnati da mio nipote Jody. E ora, io devo ritornare nel dolce abbraccio della cripta... Ma tornerò!!!

    The Simpson ; AABF08 (Domenica orrenda domenica)

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    11
    Originariamente inviato da MisterBean
    Come mai usi le dichiarazioni
    codice:
    string titolo[25];
    string cantante[25];
    ? Quelle non sono stringhe, sono array di stringhe (di 25 elementi ciascuno).
    Comunque posta anche il codice per leggere e scrivere su file.
    Utilizzo l'array di stringhe perchè il programma deve fare questo:
    creo un array di record e ogni record deve contenere queste informazioni:
    -nome del cd (e quindi una stringa)
    -numero (un int)
    -N tracce (dove N="numero", utilizzo l'array di stringhe perchè ho bisogno che in ogni record siano salvate gli N nome diversi delle N tracce diverse)
    -N artisti (stessa cosa delle "N tracce")
    Questo è il codice della funzione che salva il file:
    codice:
    void salva_file(record cd[], int&riemp)
    {
         fstream scrittura;
         scrittura.open("database.txt",ios::out);
         for(int i=0;i<riemp;i++){
                 scrittura<<cd[i].nome_cd <<endl;
                 scrittura<<cd[i].numero <<endl;
                 for(int j=0;j<cd[i].numero;j++){
                         scrittura<<cd[i].canzone[j] <<cd[i].artista[j];
                 }
                 scrittura<<endl;
         }
         scrittura.close();
         cout<<"scrittura completata";
    }
    Questo invece è il codice della funzione che legge da file:
    codice:
    void carica_file(record cd[], int&riemp)
    {
         riemp=0;
         fstream lettura;
         lettura.open("database.txt",ios::in);
         while(!lettura.eof()){
                      getline(lettura,cd[riemp].nome_cd);
                     lettura>>cd[riemp].numero;
                     for(int i=0;i<cd[riemp].numero;i++){
                             getline(lettura,cd[riemp].canzone[i]);
                             getline(lettura,cd[riemp].artista[i]);
                     }
                     }
                     cout<<controllo;
         
         riemp++;
         }
         lettura.close();
         cout<<"lettura completata";
    }
    "riemp" è il riempimento del vettore di record che inizializzo in fase di lettura, ma che poi gestirò in maniera diversa quando riuscirò a capire dove sbaglio! XD
    ps "salva_file" credo sia giusta perchè il file che mi scrive sembra tutto ok...
    vi ringrazio per la pazienza =)

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Ma

    canzone

    artista

    cosa sono? Nella struttura c'è

    titolo

    cantante

    Qual è il sorgente (anche parziale di test) corretto e *completamente compilabile* ?

    E perché all'inizio hai scritto

    "ho bisogno delle stringhe perchè utilizzo degli spazi e quindi non andrei bene con il tipo char"

    ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    11
    Originariamente inviato da oregon
    Ma

    canzone

    artista

    cosa sono? Nella struttura c'è

    titolo

    cantante

    Qual è il sorgente (anche parziale di test) corretto e *completamente compilabile* ?

    E perché all'inizio hai scritto

    "ho bisogno delle stringhe perchè utilizzo degli spazi e quindi non andrei bene con il tipo char"

    ?
    scusatemi, ho provato a farlo piu volte quindi in questi giorni l'ho modificato parecchio. artista e cantante sono la stessa cosa, così come canzone e titolo.
    ho bisogno della stringa perchè se volessi salvare ad esempio il campo nome_cd come "Prova cd uno", nel momento in cui utilizzo un array char (e non il tipo string) e faccio "cin>>" il nome si chiuderebbe a "Prova" perchè lo spazio viene contato come chiusura dell'array e mi assegnerebbe automaticamente " cd uno" a successivi "cin>>" che vado a fare, dandomi dei risultati che non voglio.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da andre-83
    ho bisogno della stringa perchè se volessi salvare ad esempio il campo nome_cd come "Prova cd uno", nel momento in cui utilizzo un array char (e non il tipo string) e faccio "cin>>" il nome si chiuderebbe a "Prova" perchè lo spazio viene contato come chiusura dell'array e mi assegnerebbe automaticamente " cd uno" a successivi "cin>>" che vado a fare, dandomi dei risultati che non voglio.
    Non mi pare un buon motivo ... proprio per questo puoi usare la

    getline
    http://www.cplusplus.com/reference/i...tream/getline/

    scusatemi, ho provato a farlo piu volte quindi in questi giorni l'ho modificato parecchio. artista e cantante sono la stessa cosa, così come canzone e titolo.
    Comunque, fornisci un sorgente di prova *corretto*, completo e compilabile e indica i problemi, altrimenti non si riesce a dare una risposta concreta ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    11
    Originariamente inviato da oregon
    Comunque, fornisci un sorgente di prova *corretto*, completo e compilabile e indica i problemi, altrimenti non si riesce a dare una risposta concreta ...
    No, ma hai ragione lo so, è solo che in questi giorni l'ho modificato, quindi non mi sono accorto di quel cambiamento. scusate.


    Originariamente inviato da oregon
    Non mi pare un buon motivo ... proprio per questo puoi usare la

    getline
    http://www.cplusplus.com/reference/i...tream/getline/
    Quindi in definitiva che mi consigli di fare? sostituire le stringhe "nome_cd", "canzone", "cantante" con array di char e utilizzare la getline al posto del cin ??
    ma se facessi così poi dovrei dichiarare canzone e cantante come array di char molto lunghi. mi converrebe lo stesso?
    grazie

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.