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 BezeichnerHier 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