Integer aus Datei einlesen



  • Ich würde gerne eine Textdatei mit mehreren Integern einlesen, und in meinem Programm in einem Array speichern. Jeder Integer hat eine eigene neue Zeile. Wie kann ich dies intelligent in meinem Programm einbauen?



  • Hallo,

    Du könntest über getline einlesen und dann nach integer konvertieren oder auch einfach nur eine integer-matrix füllen.

    MFG winexec*



  • Hallo,

    Vielleicht möchtest du ein Beispiel:

    Textdatei:

    3
    
    32768
    1227
    1845
    

    Source:

    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int main(){
        int count = 0;
    	ifstream in("inuse.txt");
    	if(in){
            in >> count;
            int *matrix = new int[count];
            for(int i = 0; i < count; i++){
                in >> matrix[i];
            }
            for(int i = 0; i < count; i++){
                cout << matrix[i] << endl;
            }
    	}
    }
    

    MFG winexec*



  • Hallo

    @winexec : Bei deinem Beispiel wird der durch new reservierte Speicher nicht wieder freigegeben.
    Und in C++ sollte man wenn möglich Container wie std::vector nehmen, da diese den Speicher automatisch veralten.

    bis bald
    akari



  • Hallo,

    Sollte nur als Beispiel dienen. Ist mir schon klar :).

    MFG winexec*



  • Yo, nim STL Container:

    #include <iostream>
    #include <vector>
    #include <fstream>
    
    int main()
    {
    	std::ifstream stream( "foo.txt" );
    
    	if ( !stream )
    		throw std::logic_error( "Datei konnte nicht geoeffnet werden" );
    
    	int count;
    	std::vector< int > buffer;
    
    	stream >> count;
    
    	if ( 0 == count )
    	{
    		std::cout << "keine Daten vorhanden";
    	}
    	else
    	{
    		buffer.resize( count );
    
    		for ( int i = 0; i < count; ++i )
    		{
    			stream >> buffer[ i ];
    		}
    	}
    
    	stream.close();
    
    	for ( std::vector< int >::iterator it = buffer.begin(); it != buffer.end(); ++it )
    	{
    		std::cout << *it << std::endl;
    	}
    }
    

Anmelden zum Antworten