c++ Einlesen der csv-Datei
Ich Lesen möchte csv-Datei mithilfe von c++
so, hier ist mein code
int main(){
ifstream classFile("class.csv");
vector<string> classData;
while (getline(classFile, line,',')) //there is input overload classfile
{
classData.push_back(line);
}
}
hier meine Frage : mein problem ist, wenn es liest die Letzte Spalte jeder Zeile
(da Sie nicht durch Komma getrennt) es liest Letzte Spalte, die Daten und die erste der nächsten Zeile die Daten
zum Beispiel, wenn meine Daten wie
className, classLocation, Professor
c++ - Bibliothek, John
dann, es liest sich wie className/classLocation/Professor c++/Library /John
gibt es trotzdem, dass ich trennen kann meine Letzte Kolumne vom ersten des nächsten Zeile?
Danke und sorry, dass es verwirrend
CSV ist eigentlich der end-of-line nach jedem Datensatz. Hat deine csv hat ein Ende-der-Zeile nach jedem Datensatz? Was Sie tun können, ist zuerst die Zeile und anschließend teilen Sie mit
stackoverflow.com/questions/7621727/... Sie gehen zu verwenden, 2 Trennzeichen
mögliche Duplikate von die Aufteilung einer Zeile in einer csv-Datei in einen std::vector?
,
.stackoverflow.com/questions/7621727/... Sie gehen zu verwenden, 2 Trennzeichen
,
und \n
in Ihrem Fall, Sie sind mit nur ,
so die \n
wird ein Teil der Zeichenfolgemögliche Duplikate von die Aufteilung einer Zeile in einer csv-Datei in einen std::vector?
InformationsquelleAutor programing_is_hard | 2013-11-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lesen Sie die Datei zeilenweise:
Vorbei, dass jede Linie zu einem istingstream und Lesen Sie die Felder aus:
Haftungsausschluss:
Dies ist eine vereinfachte Parsen einer csv-Datei.
Definitiv in einer Schleife. Eine while-Schleife ist eine gute Wahl, weil Sie nicht unbedingt wissen, wie lange die .csv-Datei werden, und die abschließende Bedingung wird nur ausgeführt werden Linien.
wow!!!! es funktioniert!! Ich habe absolut keine Ahnung wie oder warum, aber es funktioniert!! XD danke!!
und ich denke, es angenommen zu werden istringstream s(Zeile)? cuz istringstream(line) s nicht funktioniert.. trotzdem vielen Dank!
vergessen Sie nicht, #include <sstream>. vielen Dank für dieses Beispiel!
InformationsquelleAutor Dieter Lücking
Sorry, kann ich schieben Sie in ein paar einfachen C in diesem thread?
Einlesen der csv ist ziemlich klar:
Und ganz sicher sollte es funktionieren, wo C++ arbeitet.
Dort, in der
while
wir prüfen, wie viele Objekte fscanf gefunden hat:fscanf(fp, "%g,%g\n", &f1, &f2) == 2
-- fscanf gibt die Anzahl der Objekte, die er findet.Ich hoffe es könnte helfen, jemand.
(Und wenn jemand möchte, um zu sehen, mehr info auf
fscanf
und Lesen von Dateien -- lassen Sie einige Kommentare.)ja, es wird ganz sicher brechen. Und, hinzufügen, um das problem der Leerzeichen in der CSV-Datei, die Anzahl der Felder ist fest im Programm, das ist nicht der Fall mit getline. (Obwohl, in der Regel die Anzahl der Felder behoben Wird.)
InformationsquelleAutor xealits
Falls Sie interessiert sind, haben ein
void
Funktion, die aufgerufen werden, die in Ihremmain
Abschnitt, schauen Sie sich bitte den folgenden code:Meine
.csv
Datei Datensatz zur Verfügung gestellt von der IMU-sensor, durch Komma getrennt:InformationsquelleAutor Färid Alijani