Wie boost filesstem einsetzen
-
Ja, da steht das es borland heißen muss.
-
Welchen Borland-Compiler hast du denn?
Für den BCB2007 kann es z.Bsp. so heißenbjam borland --build-type=complete "--build-dir=d:/Programming/boost_org/boost_1_37_0/bcb2007" "--prefix=d:/Programming/boost_org/boost_1_37_0/bcb2007" "-sBCCROOT=C:/Programme/CodeGear/RADStudio/5_0" --with-filesystem install
build-dir und prefix geben dabei die Verzeichnisse an wo die temporären Datein und das Ergebnis landen. sBCCROOT gibt den Pfad zum Compiler an.
Das musst du also noch anpassen.
-
boost_filesystem schrieb:
#include "boost\filesystem\operations.hpp" namespace boostFS = boost::filesystem;so etwas in der Art.
Und ich schäme mich für meine Frage. (Muss mich als totaler Windows-Noob outen...)
Kommt der Windows-Compiler mit Backslash "\" zurecht?!? Ich dachte immer, dass der normale Slash "/" Standard ist.In jedem Fall kompiliert es nicht unter Linux.
-
Mach einen Slash ("/"), dann hast du keine Probleme.
Beim Backslash muss man berücksichtigen, dass "\" gefolgt von einem Zeichen eine Escapesequenz darstellt, von daher muss man "\\" nehmen.
Edit: Text so verändert, dass Backslashs richtig angezeigt werden.
-
Hallo!
Ich habe hier ein Frage, bei der Verwendung von boost::filesystem.
Diese stellt ja ein Framework für den Dateizugriff dar, aber ich finde keine Klasse mit der ich ein File einlesen kann? Ich möchte ein jpg einlesen und dieses Framework verwenden...oder macht man das ganz normal mit fread?
Also gibt es in boost::filesystem auch einen "Ersatz" für fread? Ich möchte irgendwie nicht das Framework verwenden und dann auf eine Basisfunktion wie fread zurückgreifen!
Danke!
-
Das hat dann nix mehr mit boost::fileystem zu tun. Das einlesen kannst du mit der Standardbibliotheks Klassen machen. (std::ifstream).
-
OK, also für das einlesen eines jpg verwendet man kein boost und kein stl? danke! alles klar!
-
Doch naklar,man verwendet die stl, lies den Beitrag von drakon genau.
-
ok, wie weiß man dass etwas nicht zur stl gehört? fread gehört ja beispielsweise nicht dazu oder?
-
Alles was du HIER findest, gehört zur STL
-
Firefighter schrieb:
Alles was du HIER findest, gehört zur STL
Nicht wirklich. STL heisst ja Standard Template Library. Also ist das einfach der Teil der Standardbibliothek, der templates benutzt. Sprich damit sind normalerweise die Container und Funktionen gemeint. (und nicht der C-Teil, wie z.B cmath usw. ). Dazu kann man die stream Klassen auch noch zählen, da die ja auch templates sind. Allerdings ist der Begriff ja nicht definiert und somit nicht 100% klar, was damit gemeint ist.
-
drakon schrieb:
Nicht wirklich. STL heisst ja Standard Template Library. Also ist das einfach der Teil der Standardbibliothek, der templates benutzt.
Das wäre aber ein sehr grosser Teil. Streams und
std::tr1::shared_ptrwürde ich zum Beispiel nicht dazu zählen.Der Begriff ist zwar nicht genau definiert, aber meistens wird er im Zusammenhang mit den Containern, Algorithmen und Iteratoren verwendet. Auf der Seite wird die Standard Template Library meiner Meinung nach am ehesten durch folgende Links repräsentiert:
http://www.cplusplus.com/reference/stl/
http://www.cplusplus.com/reference/algorithm/
http://www.cplusplus.com/reference/std/iterator/
-
Naja. Für mich schon.

Aber ich habe ja geschrieben, dass normalerweise Container und die Funktionen damit gemeint sind..
-
Noch eine Frage:
Wenn ich folgenden dieses Struct definiere:
typedef struct { unsigned short a; //2Bytes unsigned int b; //4Bytes unsigned int c; //4Bytes } DATA_HEADER;Und dieses dann wie folgt befülle:
DATA_HEADER header; ifstream file ("test.dat", ios::in|ios::binary); file.seekg (0, ios::beg); file.read ((char*) &header, sizeof(header)); file.close();Kann ich mir dann sicher sein, dass die ersten zwei Bytes in header.a, die nächsten 4 Bytes in header.b usw liegen? Oder ist diese Methode eher unsicher?
-
Reinoslav1 schrieb:
Kann ich mir dann sicher sein, dass die ersten zwei Bytes in header.a, die nächsten 4 Bytes in header.b usw liegen? Oder ist diese Methode eher unsicher?
Die Ausrichtung der Member in der Klasse (Alignment) wird vom Standard nicht vorgeschrieben und kann demnach von Compiler zu Compiler variieren. Oft kannst du die Pack-Grösse aber einstellen (unter MSVC++ z.B. mit
#pragma pack). Das binäre Schreiben sollte allerdings gehen, solange das Alignment gleich ist. Aber wenn du beispielsweise als Text schreibst, bist du natürlich viel flexibler.Zudem ist
typedef struct {} name;in C++ sehr unüblich, da eine Struktur bereits selber einen vollständigen Typ angibt. Also eherstruct name {};. Und das ist zwar ein bisschen Ansichtssache, aber ich würde die C-Casts unbedingt durchreinterpret_castersetzen. Meiner Meinung nach sieht man dabei schneller, was passiert, und vermeidet auch Fehler, weil man den Cast spezifiziert (C-Casts casten nämlich fast alles).