CSV datei als array auslesen

10/17/2018 14:44 suchoo#1
hallo, community,

ich habe eine csv datei in folgendem format:


ich möchte die datei als array in c++ auslesen.
wie funzt das am besten?
wo muss die datei hinterlegt sein um das richtig auszulesen, und wie ist das mit den pfadangeben?
ich habe Code::Blocks 13.12 als editor, und GDB:CDG debugger.

Quote:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

double data[6][764];
int count = 1;
int bigcount = 1;

int main() {

ifstream file;
file.open("./cl.csv");

while (bigcount < 765)
{
while (count < 7)
{

getline(file, data[count][bigcount], ',');
count++;
}

bigcount++;

}

file.close();
return 0;
}
wie muss die pfadangabe sein, wenn die csv datei im ordner des projektes liegt?

sorry, ich bin neu hier, aber als hintergrundinfo, es soll ein savegame editor für magic the gathering 1997 werden.
10/17/2018 19:02 florian0#2
Relative Pfade (solche ohne C:\ vorne dran) sind immer relativ zum Ausführungsverzeichnis. Das Ausführungsverzeichnis ist, einfach gesagt, der Ordner in dem du die Datei ausgeführt hast. Wenn du die Datei aus dem Editor ausführst, setzt der Editor einen Ausführungspfad für dich. Welcher das ist, kann ich leider nicht sicher sagen, da ich CodeBlocks nicht verwende. Hier wird der Benutzerordner als Ausführungsverzeichnis angegeben:
[Only registered and activated users can see links. Click Here To Register...]
(Ist zwar für Mac, sollte aber für Windows keinen Unterschied machen.)

Zum Testen kannst du auch einfach mal eine neue Datei per Code anlegen und schauen wo diese auf deiner Festplatte auftaucht. Zur Not per Dateisuche suchen.
10/17/2018 19:12 suchoo#3
danke für die info, die datei musste sich tastsächlich im unterordner des compilers befinden
:D


edit:

ich habe noch ein problem,bestimmt nur ganz banal
im folgenden funktioniert die funktion getline() nicht.

ich habe
Quote:
getline(file, data[scount][bigcount], ';');
für eine cvs file mit trennern als ;
bei mir kommt kein fehler, aber auch keine trennung der zeichen im cout.

Quote:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

string data[5][764];
int scount = 1;
int bigcount = 1;

int main() {

ifstream file;
file.open("cl.csv");

while (bigcount < 745)
{
while (scount < 6)
{

getline(file, data[scount][bigcount], ',');
scount++;
}
cout<<data[2][bigcount];
bigcount++;
scount=1;
}

file.close();
return 0;
}
10/17/2018 21:02 warfley#4
Du splittest ja auch nach ',' nicht nach ';'