Lettura di interi da file

di il
5 risposte

Lettura di interi da file

Vorrei leggere le singole cifre presenti in un file, ed inserirle in un vettore, appunto di interi, ma non riesco..

#include <iostream>
#include <fstream>

using namespace std;

int main() {
	char nome_file[50];
	int vett_in[100], vett_out[100]; 
	int i = 0;
	ifstream input;
	
//	cout << "Inserisci il nome del file da analizzare: " << endl;
//	cin >> nome_file;
	input.open("file.txt");
		
	if(input.is_open()) {
		while(!input.eof()) {
		input >> vett_in[i];
		i++;
		}
	}
	else cout << "File inesistente" << endl;
	
	for(i=0; i<100; i++) {
		cout << vett_in[i];
	}
	
	return 0;
}
Ho commentato l'inserimento da tastiera per testare prima la lettura. Il file file.txt esiste ed è nella stessa cartella del main, inoltre ha la seguente unica riga: "52737645333". Il problema che da, è che va in loop... qualcuno sa dirmi il perché?

5 Risposte

  • Re: Lettura di interi da file

    52737645333 è un singolo numero. Se vuoi che vengano letti diversi numeri separati con uno spazio

    52 73 76 44 3 33

    E poi dato che non sono 100 numeri non fare il ciclo for di 100 !
  • Re: Lettura di interi da file

    E comunque eof è una flag che viene settata dopo una lettura ad un file con il puntatore di lettura alla fine, quindi devi tener conto di una lettura che non va a buon termine.
  • Re: Lettura di interi da file

    oregon ha scritto:


    52737645333 è un singolo numero. Se vuoi che vengano letti diversi numeri separati con uno spazio

    52 73 76 44 3 33

    E poi dato che non sono 100 numeri non fare il ciclo for di 100 !
    Sì, ho provato anche a separare le cifre.. ma in ogni caso dovrebbe immagazzinare almeno un elemento, anche se rimanesse tutto attaccato, invece no...
  • Re: Lettura di interi da file

    _Achille ha scritto:


    E comunque eof è una flag che viene settata dopo una lettura ad un file con il puntatore di lettura alla fine, quindi devi tener conto di una lettura che non va a buon termine.
    L'ultima lettura?
  • Re: Lettura di interi da file

    Teodoro777 ha scritto:


    oregon ha scritto:


    52737645333 è un singolo numero. Se vuoi che vengano letti diversi numeri separati con uno spazio

    52 73 76 44 3 33

    E poi dato che non sono 100 numeri non fare il ciclo for di 100 !
    Sì, ho provato anche a separare le cifre.. ma in ogni caso dovrebbe immagazzinare almeno un elemento, anche se rimanesse tutto attaccato, invece no...
    Se lo lasci attaccato quel valore non può essere letto in un intero. Devi separare i valori con uno spazio e scrivere
    [Code] input >> vett_in[i]; while(!input.eof()) { i++; input >> vett_in[i]; }
Devi accedere o registrarti per scrivere nel forum
5 risposte