Lesen getrennten Spalten in einer CSV-Datei in C++ unter Verwendung von getLine
Ich habe ein Programm, das erfolgreich Lesen einer CSV-Datei. Das sagte der CSV-Datei ist eine Liste getrennt durch 3 Spalten. Und jede Spalte hat ein Komma zwischen jeder Zeile. Zum Beispiel
Zeile 1 - - - (Interpret, genre, song
Zeile 2 --- Michael jackson, Pop, thriller
und so weiter. Was ich will, mein Programm zu tun ist, Lesen Sie die erste Zeile und Künstler, genre und song, drucken Sie diese aus, um den Benutzer als Optionen. Zum Beispiel
"Wählen Sie eine Option"
1. Künstler
2. Genre
3. Song
dann, wenn Sie eine option auswählen, dann zeigt Ihnen alle Interpreten, songs oder genres in der CSV-Datei.
Bisher habe ich mein Programm Auslesen der CSV und setzen jede Zeile in einen Vektor. Hier ist mein code bisher ...
#include <iostream>
#include <sstream>
#include <string>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
ifstream infile("music_list.csv");
string line = "";
vector<string> all_words;
cout << "Hello";
while (getline(infile, line))
{
stringstream strstr(line);
string word = "";
while (getline(strstr,word, ','))
{
all_words.push_back(word);
}
for (unsigned i = 0; i < all_words.size(); i++)
{
cout << all_words.at(i)<< "\n";
}
}
system("pause");
return 0;
}
Bin ich nur Probleme, herauszufinden, wie man es Lesen der ersten Zeile, trennen Sie die einzelnen string in die erste Zeile, die ist schon durch ein Komma getrennt und haben dass dann ausgegeben, die dem Benutzer als eine option. Also im Grunde kann ich ändern, Interpret, genre, song und so etwas wie Vorspeisen, Speise, Getränke in der CSV-Datei.
InformationsquelleAutor Matthew Miles | 2013-04-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst müssen Sie zum Lesen der csv-Datei und speichern Sie die Zeilen in einem Vektor können Sie mit dieser Funktion tun.
Dann teilen Sie die jede Zeile ein Eintrag, um 2D-Vektor. für die, die Sie können diese Funktion verwenden,
Ich habe nicht versucht, Sie zu kompilieren jeder der diese Funktion, weil ich nicht das Umfeld, um so zu tun hier. Aber ich denke, dass dies wird Ihnen helfen, denken Sie über die Richtung.
nun Ihre Daten in ein 2D-Vektor wie excell sheet. So können Sie zugreifen, indem Sie den index der innere Vektor.
InformationsquelleAutor Nayana Adassuriya
Könnten Sie eine
std::map<string,vector<string>>
so, dass man speichert dann die einzelnen Spalten der CSV-Datei aus der Zeile 2 werden in der Karte als Vektor von Zeichenketten, sortiert nach den angezeigten text in der Spalte in Zeile 1 der CSV-Datei.Dann Sie konnte die Namen der Felder, die durch die Iteration über die Schlüssel des
std::map
, die bequem gespeichert in alphabetischer Reihenfolge.Die Aufgabe, den Messwert in der ersten Zeile der CSV-Datei durchgeführt werden kann durch den code, den Sie bereits haben, oder etwas anspruchsvollere berücksichtigt, dass die angegebenen Felder, etc. in voll-funktionsfähige CSV-Dateien.
InformationsquelleAutor Simon