Matrice e struct c++

di il
5 risposte

Matrice e struct c++

Gentili utenti del forum avrei un quesito da porre, grazie in anticipo a chi risponderà.
devo scrivere un programma che da un file di testo riporta dei dati in una struct , in particolar modo nella struct è contenuta una matrice di interi. Al momento di scrittura della funzione solo per la matrice senza prendere in considerazione la struct, il programma risponde correttamente, stessa cosa quando mi viene chiesto di inserire qualche altro tipo di dato da file, il problema e che non so come passare dei dati da file ad una matrice contenuta in una struct, mi chiedevo quindi se dovessi dichiarare prima una matrice e poi creare una struct contenente quest'ultima direttamente nel main o altro?

questo e il codice che ho utlizzato per una prova: come si puo vedere è un caricamento di file su una matrice ma non so caricarla in una struct

#include<iostream>
#include<fstream>

#define righe 2
#define colonne 2

using namespace std;


void carica_da_file(string nome_cognome [][colonne]){
	
	ifstream myfile("nomi_studenti.txt", ios::in);
	if(!myfile){
		cout<<"errore in fase di lettura ! "<<endl;
		exit(1);
	}
	
	for(int i=0; i<righe; i++){
		for(int j=0; j<colonne; j++){
			myfile>>nome_cognome[i][j];
		}
	}
	
	myfile.close();
	
}

/*struct studente{
	string nome_cognome [righe][colonne];
};*/

int main(){
	string nome_cognome[righe][colonne];
	carica(nome_cognome);
}

5 Risposte

  • Re: Matrice e struct c++

    No ... mostraci la struct ... vediamo il codice
  • Re: Matrice e struct c++

    
    int main(){
    	studente s;
    	char nome_cognome[righe][colonne];
    	carica(nome_cognome);
    	for(int i=0;i<righe;i++)
    		for(int j=0;j<colonne;j++)
    			s.nome_cognome[i][j]=nome_cognome[i][j];
    }
    
    Prima si crea la variabile di tipo struct e per accedere ai campi usi il punto.
    Per come l'hai fatta si usa char, non string.
  • Re: Matrice e struct c++

    Chiedo scusa, se intendevi proprio usare un tipo string, la procedura è come quella che ho scritto sopra (va incluso l'header file di string, però), solo con string al posto di char.
    Si può tuttavia velocizzare l'operazione di copia in questo modo usando la funzione move:
    
    #include<string>
    #include<utility>
    /* funzioni */
    int main(){
    	studente s;
    	string nome_cognome[righe][colonne];
    	carica(nome_cognome);
    	for(int i=0;i<righe;i++)
    		for(int j=0;j<colonne;j++)
    			s.nome_cognome[i][j]=std::move(nome_cognome[i][j]);
    }
    
    Attenzione che dopo questa operazione, gli elementi di nome_cognome saranno delle stringhe vuote. Ma non è un problema, visto che li dovrai riutilizzare per altre letture.
  • Re: Matrice e struct c++

    Alexv ha scritto:


    Chiedo scusa, se intendevi proprio usare un tipo string, la procedura è come quella che ho scritto sopra (va incluso l'header file di string, però), solo con string al posto di char.
    Si può tuttavia velocizzare l'operazione di copia in questo modo usando la funzione move:
    
    #include<string>
    #include<utility>
    /* funzioni */
    int main(){
    	studente s;
    	string nome_cognome[righe][colonne];
    	carica(nome_cognome);
    	for(int i=0;i<righe;i++)
    		for(int j=0;j<colonne;j++)
    			s.nome_cognome[i][j]=std::move(nome_cognome[i][j]);
    }
    
    Attenzione che dopo questa operazione, gli elementi di nome_cognome saranno delle stringhe vuote. Ma non è un problema, visto che li dovrai riutilizzare per altre letture.
    ti ringrazio alex, ora mi è piu chiaro l'unica cosa è che quando scrivo il codice con std::move il programma restituisce questo errore-->move is note a member of std.
    cosa posso fare?
  • Re: Matrice e struct c++

Devi accedere o registrarti per scrivere nel forum
5 risposte