Kennt jemand, wie man eine CSV-Datei analysiert und in eine String-Liste einfügt? Im Moment nehme ich die gesamte CSV-Datei und setze sie in die String-Liste. Ich versuche herauszufinden, ob es einen Weg gibt, nur die erste Spalte zu bekommen.
%Vor%Was Sie suchen, ist eine QTextStream Klasse. Es bietet alle Arten von Schnittstellen zum Lesen und Schreiben von Dateien.
Ein einfaches Beispiel:
%Vor%Alternativ können Sie auch so etwas machen, das dasselbe Ergebnis hätte:
%Vor%Man könnte es lieber so machen:
%Vor%Hinweis: Diese Methode trimmt keine Leerzeichen vor oder nach einem Feld. Ich plane, es in der mittelfristigen Zukunft zu verbessern (oder frei zu fühlen), um Lücken vor dem ersten Zitat und nach dem letzten zu entfernen. Wenn keine Anführungszeichen vorhanden sind, können Leerzeichen ebenfalls abgeschnitten werden. Abgesehen davon finde ich im Programmgenerierten CSV im Allgemeinen keine Leerzeichen vor oder nach Anführungszeichen. und der Anführungszeichen-Zustand erlaubt das Einfügen von Kommas in ein Text-Literal-Feld.
Mehr als für Ihren Testfall benötigt wurde, weiß ich; aber eine solide allgemeine Antwort auf das?, dennoch - vielleicht für andere, die es gefunden haben.
Adaptiert von: Ссылка
Hier ist der Code, den ich normalerweise verwende. Ich bin der Autor, halte das so, wie es ist, Public Domain. Es hat ein ähnliches Feature-Set und Konzept wie der CodeLurker-Code , außer dass die State-Machine anders dargestellt wird, der Code ist etwas kürzer .
%Vor%in
, a QTextStream
. row
, a QStringList
, der die Zeile erhält. true
wenn eine Zeile gelesen wurde, false
wenn EOF. std::runtime_error
, wenn ein Fehler auftritt. Es analysiert CSVs im Excel-Stil, behandelt Anführungszeichen und doppelte Anführungszeichen entsprechend und erlaubt Zeilenumbrüche in Feldern. Verarbeitet Windows- und Unix-Zeilenendungen ordnungsgemäß, solange Ihre Datei mit QFile::Text
geöffnet wird. Ich glaube nicht, dass Qt die Mac-Zeilenenden der alten Schule unterstützt, und dies unterstützt keine nichtübersetzten Zeilenenden, aber heutzutage sollte das kein Problem mehr sein.
Weitere Hinweise:
x"y"z
als xyz
, war nicht sicher, was die Regel für Mid-String-Anführungszeichen war. Ich habe keine Ahnung, ob das stimmt. QChar
sollte trivial sein. Beispiel:
%Vor%