CSV-Datei einlesen



  • Hallo,

    ich möchte mit Visual Studio 2017 eine CSV-Datei einlesen und in einem anderen Format wieder herausschreiben. Ich habe bei Euch ein Beispiel gefunden und ausprobiert, jedoch macht er bei einigen Befehlen beim Kompilieren Fehlermeldungen.

    ifstream : nicht deklarierter Bezeichner
    csvread: nicht deklarierter Bezeichner
    .open: müssen sich in einer Klasse/Struktur/Union befinden
    ios: keine Klasse oder Namespace
    string: nichtdeklarierter Bezeichner
    cout: nicht deklarierter Bezeichner

    Hier ist der Code:

    #include <iostream>
    #include <fstream>
    #include <string>
    #include "stdafx.h"
    
    using namespace std;
    
    int main() {
    	ifstream csvread;
    	csvread.open("test.csv", ios::in);
    	if (csvread) {
    		//Datei bis Ende einlesen und bei ';' strings trennen
    		string s = "";
    		while (getline(csvread, s, ';'))
    		{
    			cout << s << endl; //alle Strings getrennt ausgeben
    		}
    
    		csvread.close();
    	}
    	else {
    		cerr << "Fehler beim Lesen!" << endl;
    	}
    	return 0;
    }
    

    Muss ich hier im Header etwas einfügen oder woran liegt es?

    Gruß

    Berni



  • Hallo,

    du scheinst das gleiche Problem zu haben wie unter #include <string> funktioniert nicht (beachte meine Antwort dazu).



  • Hallo,

    Deine Antwort ist richtig und es läuft jetzt.

    Es lag aber auch mit daran, dass die Windows-10-sdk nicht installiert war!

    Besten Dank und viele Grüße,

    Berni



  • ...möchte nun eingelesene Strings wieder auf ein anderes File herausschreiben.

    Einlesen geht einwandfrei, neue Datei anlegen geht auch, bloß die eingelesenen String kommen noch nicht im neuen File an:

    #include "stdafx.h"
    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std; 
    
    struct DatenCSV
    {
    	string str1;
    	string str2;
    	string str3;
    	string str4;
    	string str5;
    };
    
      istream& lese_ein(istream& in, DatenCSV& p) 
    {
    	getline(in, p.str1, ';');
    	getline(in, p.str2, ';');
    	getline(in, p.str3, ';');
    	getline(in, p.str4, ';');
    	getline(in, p.str5, '\n');
    	return in;
    	}
    
      ostream& schreibe_aus(ostream& out, DatenCSV& p)
      {
    //	  getline(out, p.str1, ';');
    //	  getline(out, p.str2, ';');
    //	  getline(out, p.str3, ';');
    //	  getline(out, p.str4, ';');
    //	  getline(out, p.str5, '\n');
    	  return out;
      }
    
    int main()
    {
    	ifstream csvread("cisco-serial-1.csv");
    	if (!csvread.is_open())
    	cerr << "Fehler beim Oeffnen der Datei!" << endl;
    
    else {
    
    for (DatenCSV daten; lese_ein(csvread, daten); ) { 
    
    cout << daten.str1 << endl;
    cout << daten.str2 << endl;
    cout << daten.str3 << endl;
    cout << daten.str4 << endl;
    cout << daten.str5 << endl;
    //		getchar();     
    		}   
    	}
    
    //-----------------------------------------------------------
    //      A b s p e i c h e r n
    //-----------------------------------------------------------
    
    	ofstream csvwrite("Text222.csv");
    
    	csvwrite << ("Dieser Text kommt in die Datei");
    //	getchar();
    
    //	cout  << schreiben.str1 << endl;
    //	for (DatenCSV daten1; schreibe_aus(csvwrite, daten1); ) {
    
    //		csvwrite << "Dieser Text kommt in die Datei";
    		DatenCSV daten1;
    
    //	for (DatenCSV daten; 1; ) {
    		cin >> daten1.str1;
    //		cin << daten1.str2 << endl;
    //		cin << daten1.str3 << endl;
    //		getchar();
    
    //	}   
    
    	csvwrite.close();
    
    	return 0;
    }
    

    Gruß

    Berni


Log in to reply