Einlesen einer CSV-Datei

Zhonguoren

Grünschnabel
Hallo!
Ich bin neu hier und habe mich auch schon eine Weile nicht mehr mit programmieren beschäftigt.
Ich möchte eine csv Datei einlesen, was soweit klappt. Der Haken ist nur, dass ich die Daten dann als char habe, sie aber als float bräuchte. Wenn ich es konvertieren will, kommt bloß Mist raus. Gibt es eine Möglichkeit, das direkt als float einzulesen?
C++:
ifstream file;
    char     zeile [1024];
    
    // Dateinamen einlesen
    
    cout << "Dateinamen eingeben: " << flush;
    cin.getline(filename, 127);
    
    // Datei öffnen
    file.open(filename, ios::in);
    
    

    if (file.good())
    {
        // Wenn die Datei geoeffnet werden konnte...

        // An den Anfang der Datei springen

       file.seekg(0L, ios::beg);

		elemente = -1;

        while (! file.eof())
        {
            // Die Datei zeilenweise auslesen
            file.getline(zeile, 1024);
            elemente++;
            
            
        }// Zählung der Elemente im Datenarray

		cout << "Anzahl der Elemente: "<<elemente << endl;

		feld = (Einheit_zeit_wert*) malloc(elemente * sizeof( Einheit_zeit_wert ));  //Erzeugen des dynamischen Datenarrays

		file.clear (0);

		file.seekg(0L, ios::beg);  //Zurückspringen an den Anfang der Datei
        		

	    file.getline(zeile, 1024);	//Einlesen einer Zeile
       

        while (! file.eof())
        {     
			  char  * single;				//Einzelne Zeit oder einzelner Wert
              

			  int i = 0;


			  file.getline(zeile, 1024);	//Einlesen einer Zeile

			  file.getline(zeile, 1024);    //Überspringen der Spaltenüberschriften

			  cout<<zeile<<endl;
              
			  
			  single =  strtok(zeile, ",");	//
              		

			  while (single != NULL)
              {
                    
                    //(*(feld+i)).zeit =  *single;  //Schreiben der Zeit in Array
					istringstream ist (single);
					
					cout<< "Single"<<*single<<endl;
					single =  strtok(NULL, ",");

					cout<<"Single:"<<single<<endl;

					//(*(feld+i)).wert >>  *single;  //Schreiben des Werts in Array
					single =  strtok(NULL, ",");

				

					cout<<(*(feld+i)).zeit<<endl;

					cout<<(*(feld+i)).wert<<endl;

					getchar();



                    }// bis zum Ende der Zeile

			  i++; //hochzählen der Zählvariablen zum Zugriff auf Datenarray

            
    }
}
    else
    {
        // Wenn die Datei nicht geoeffnet werden konnte,
        // aus welchen Gruenden auch immer...
        cout << "Datei nicht gefunden." << endl;
    }
 
moin


Benutze bitte Code-Tags! Dann ist es wesentlich einfacher zu lesen.

Wie wandelst du denn den String in float um?
Hast du schon atof() versucht?


mfg
umbrasaxum
 
Vielen Dank! Nach so einem befehl habe ich gesucht! Was sind Code-Tags? Werde ich beim nächsten Mal benutzen
zhonguoren
 
Zurück