Ordner von A nach B Kopieren.
-
Hallo ich habe hier ein Programm damit kann ich nur eine Datei vom Qullpfad zum Zielpfad kopieren,
#include <iostream> #include <string> #include <fstream> using namespace std; int main(int argc, char** argv) { char sourceFile[100], destFile[100], c; cout << "Geben sie den Pfad zu einer Quelldatei an: "; cin >> sourceFile; cout << "Geben sie den Pfad zu einer Zieldatei an: "; cin >> destFile; ifstream source(sourceFile); if(source == NULL){ cerr << "Kann Quelldatei nicht oeffnen\n"; return -1; } ofstream dest(destFile); if(dest == NULL){ cerr << "Kann Zieldatei nicht oeffnen\n"; return -1; } while(source.get(c)) dest.put(c); return 0; }Wie kann das Programm erweitern damit es mir Ordner, Unterordner und die darin befindlichen Dateien aus dem Quellpfad in den Zielpfad kopiert? Nebenbei soll der Zielpfad auch erstellt werden, wenn er nicht vorhanden ist.
-
Hallo,
Mit StandardC++ geht das gar nicht. Du kannst die Funktionen deines Betriebssystems (bei Windows SHFileOperations) oder auch boost::filesystem dafür nutzen.
-
Ich habe mir boost_1_34_1 runtergeladen, habe den Ordner boost in meinem Include Ordner von meinem Compiler kopiert.
Das Programm lässt sich aber nicht Compilieren#include <boost/filesystem/operations.hpp> #include <boost/filesystem/path.hpp> #include <iostream> using namespace boost::filesystem; main() { path my_path("D:\Daten\"); if(exists(my_path)){ cout << "Verzeichnis vorhanden" << endl; } return 0; }-------------- Build: Debug in boostFilesystem --------------- Linking console executable: bin\Debug\boostFilesystem.exe obj\Debug\main.o: In function `ZN5boost6detail17sp_counted_impl_pINS_10filesystem22basic_filesystem_errorINS2_10basic_pathISsNS2_11path_traitsEEEE5m_impEED0Ev':D:/Compiler/include/boost/detail/sp_counted_base_gcc_x86.hpp:(.text$_ZN5boost10filesystem6existsERKNS0_10basic_pathISsNS0_11path_traitsEEE[boost::filesystem::exists(boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> const&)]+0x72): undefined reference to `boost::filesystem::detail::status_api(std::string const&, unsigned int&)' collect2: ld returned 1 exit status Process terminated with status 1 (0 minutes, 0 seconds) 0 errors, 0 warningsBrauche ich da eine Lib für? Ich verstehe nicht wie ich die bauen soll.
-
boost/filesystem/operations.hpp: No such file or directory
Das sollte dir ja sagen was da schiefgeht.
Er findet den Include-Datei einfach nicht.path my_path("D:\Daten\");Aua.
Das Zweite \ maskiert die "
-
Das muss
path my_path("D:\\Daten\\");Also mit 2 "\".
Ein \ sagt dem Compiler immer dass eine Escape-Sequenz kommt, er sieht also nicht das Zeichen \ sondern die Escape-Sequenz. Das Zeichen \ bekommr indem man \\ schreibt
-
lord_fritte schrieb:
Brauche ich da eine Lib für? Ich verstehe nicht wie ich die bauen soll.
Ja, für filesystem brauchst du eine lib. Es gibt auf der boost Seite Anleitungen zum Bauen der lib. Das ist vom verwendeten Compiler abhängig. Welchen hast du denn?
-
mingw gcc für Windows 32-bit, also das geht mit dem gjam? naja ich bin gerade am bauen, aber irgendwie baut der das alles für msvc-8.0express.
Also ich habe die Visual C++ Express edition auch installiert, aber damit Compiliere ich nicht.@ Storm.Xapek.de + Aksel
Ja ich weiss, ich habe das noch nicht geändert, weils noch unwichtig ist solange das mit der lib nicht geht.
-
Hast du auch angegeben, dass du mingw nehemen willst?
bjam "-sTOOLS=mingw" "-sBUILD=debug release <runtime-link>static/dynamic" "-sMINGW_ROOT_DIRECTORY=d:/mingw" install
So sieht der bjam Aufruf bei mir aus.
Zudem habe ich noch die user-config.jam in tools\build\v2 geändert.
Dort steht dann bei mirusing gcc : mingw : d:/mingw/bin/mingw32-g++ : <root>d:\mingw\bin ;
Alle anderen usings sind auskommentiert.
-
Ok er läuft jetzt, mal abwarten.
-
Vielleicht solltest du dir mal die Ausgabe von "bjam --help" ansehen, da steht alles was du wissen musst.
Und du kannst mal "--toolset=gcc" zu dem bjam-Aufruf hinzufügen.
Aber das ist alles auch hier erklärt.
-
Nur noch eine Frage.. *.lib und *.dll ist doch theoretisch das selbe oder?
-
nein.
-
Tja,.. der baut nur *.ddl dateien aber keine lib's
-
evtl. sind Dateien die auf .a enden dabei? Das sind ebenfalls libs.
-
Ja sind vorhanden, es läuft aber irgendwie mit der DLL
-
Wenn du die filesystem-header mit einbindest werden die dazugehörigen libs meist automatisch mit eingebunden.
-
Also er Compiliert jetzt ohne zu motzen.