Alternative zu fscanf in C++?
-
Hallo,
öffne und lese ne datei mit fstrem /getline etc.
Jede Zeile enthält welcher wörter getrennt mit ";" (csv).
Kann ich das formatiert einlesen, oder muss ich das selber splitten?grüße :schland:
-
Wenn du keine andere Lib brauchen willst, selbst machen. Ist ja nicht so schwer..
-
ne schwer ist es nich... aber hier wird immer von der stl gewärmt nicht mal ne scanf alternativ gibts.. tzzz ...

-
FileReader schrieb:
ne schwer ist es nich... aber hier wird immer von der stl gewärmt nicht mal ne scanf alternativ gibts.. tzzz ...

Diu musst BOOST nehmen!

-
oder halt c mit c++ mischen..

-
Oder du benutzt eben weiterhin
fscanf, wenn es so schlimm ist, eine eigene Funktion zu schreiben
Mit
std::stringund dessen Funktionen wiefind()undsubstr()kommst du jedoch schon recht weit...
-
ja hätte es mit strtok strchr etc. oder so gemacht;) danke
wie kann ich den dateizeiger wieder an anfang stetzen bei fstream?
-
-
Bekommt man sowas mit STL nicht schön und einfach hin?
-
FileReader schrieb:
ja hätte es mit strtok strchr etc. oder so gemacht;)
In der Hoffnung, dich dabei von C und
fscanf()abzuwenden? :pecht schrieb:
Bekommt man sowas mit STL nicht schön und einfach hin?
STL ist zwar schön und gut, v.a. was Container angeht, aber nicht die Lösung für alles. In diesem Falle wären Streams und Strings angesagt.
-
Wie sieht es mit der Performace aus? Wenn ich bspw. die daten sehr oft von oben nach unten durchparsen muss? wäre da C nicht schneller???
-
wieso solltest du das tun? einmal parsen, die datenstrukturen füllen und fertig ist der lack, oder nicht?
-
würde mich auch interessieren, ob da C schneller wäre, egal warum er es vor hat:)
Aber ne scanf alternative wäre echt noch;) C rockt... und :schland: nicht mehr:(
-
Nexus schrieb:
...
echt schrieb:
Bekommt man sowas mit STL nicht schön und einfach hin?
STL ist zwar schön und gut, v.a. was Container angeht, aber nicht die Lösung für alles. In diesem Falle wären Streams und Strings angesagt.

Also hier wird vor allem von der Standard lib geschwärmt und in der sind
streams und strings drin ...
Wer lieber Zeilenweise einliest, kann das hinterher mit istringstream prima machen.... viel schöner, übersichtlicher und sicherer als mit fscanf().
Gruß,
Simon2.
-
Die C I/O Funktionen sind in de Praxis schneller, aber wesentlich fehlerträchtiger, vor allem was Bufferüberläufe angeht. Die C++ Streams sollten also erstmal Vorrang bekommen.
-
Wie kann ich Formatiere lesen mit dem ">>" operator machen bei CSV format mit
istringstream
?
strBuf >> variable1 >> ";" >> variable2 >> ";" >> variable3;so?
-
Hat Werner doch schon eine schöne Lösung zu geliefert: http://www.c-plusplus.net/forum/viewtopic-var-t-is-190246-and-postdays-is-0-and-postorder-is-asc-and-start-is-11.html
Gruß,
Simon2.
-
Simon2 schrieb:
Nexus schrieb:
...
echt schrieb:
Bekommt man sowas mit STL nicht schön und einfach hin?
STL ist zwar schön und gut, v.a. was Container angeht, aber nicht die Lösung für alles. In diesem Falle wären Streams und Strings angesagt.

Also hier wird vor allem von der Standard lib geschwärmt und in der sind
streams und strings drin ...
Ich habe mich hierbei aber auf echts Vorschlag mit der STL und nicht auf die gesamte C++-Standardbibliothek bezogen. In der Standard Template Library sind Strings und Streams nicht enthalten.
-
Nexus schrieb:
In der Standard Template Library sind Strings und Streams nicht enthalten.
Strings schon...
-
Nexus schrieb:
...Ich habe mich hierbei aber auf echts Vorschlag ...
Ach so.

Allerdings wird hier im Forum (und erst Recht von Anfängern) "STL" sysnonym mit "StdLib" verwendet, weswegen ich echt auch in dieser Richtung verstanden hätte.
Aber nun ist ja alles klar.
Gruß,
Simon2.