Lettura di interi da file

di Anonimizzato18617 il
5 risposte
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

  • 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 !
  • 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.
  • 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...
  • _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?
  • 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