Liste mit Pfaden erstellen
-
Hi, ich möchte eine Liste mit (vielen
) Pfadeinträgen erstellen. bisher sieht es so aus:[cpp] #include <dir.h> #include <direct.h> #define MAX_MOVIES 17771 char m_cCurrentPath[_MAX_PATH]; char m_cDatasetPath[]; char** m_ppcDatasetFilelist; //generate file structure getcwd(m_cCurrentPath, _MAX_PATH); sprintf(m_cDatasetPath, "%s\\..\\data", m_cCurrentPath); std::cout << "Current path is " << m_cCurrentPath << std::endl; std::cout << "Data path is " << m_cDatasetPath << std::endl; m_ppcDatasetFilelist = new char*[MAX_MOVIES]; for (int k = 0; k < MAX_MOVIES; k++){ m_ppcDatasetFilelist[k] = new char[_MAX_PATH]; sprintf(m_ppcDatasetFilelist[k],"%s\\SomeFileID%i", m_cDatasetPath, k); std::cout << m_ppcDatasetFilelist[k] << std::endl; } [/cpp]letztenendes soll m_ppcDatasetFilelist den vollständigen Pfad für die ganzen Dateien enthalten. Problem ist, dass m_ppcDatasetFilelist eben ein Pointer-Array ist und beim ausgeben nur der erste Buchstabe erscheint... Ich brauch aber den ganzen Pfad

Hilfe wär fett!
ANGs_Pino
-
Warum benutzt du kein C++? Ich meine, das schlimme rumge-chare ist ja nicht gerade einfach zu handhaben, nutz doch einfach std::string.
-
wie krieg ich das mit std::string hin, dass ich eine liste von strings bekomme, die pfade + dateiname enthält, also
c:\folder1\folder2\file1.txt
c:\folder1\folder2\file2.txt
c:\folder1\folder2\file3.txt
c:\folder1\folder2\file4.txtetc. (Habe nochkeinen Plan von Strings).
Wichtig ist, dass ich später mit den dateipfaden/dateiname textfiles öffnen kann
fid = fopen(FILENAMEARRAY[1]);
ANGs_Pino
-
#include <string> #include <vector> ... std::vector<std::string> paths; paths.push_back ( "c:\folder1\folder2\file1.txt" ); paths.push_back ( "c:\folder1\folder2\file2.txt" ); ...
-
std::liststd::string deinestrings;
und zum Öffnen von den dingern würde ich dir eher ifstream(beim lesen) empfehlen.
Kannst dich ja mal hier umschauen:
http://www.cplusplus.com/reference/string/
http://www.cplusplus.com/reference/iostream/ifstream/
-
-
Firefighter schrieb:
drakon schrieb:
[cpp]
std::vectorstd::string > paths;Haste da nich ein > zuviel?
Habs editiert. War mit den Gedanken wo anderst.

-
.. verwende C++, dann hast Du das Problem eher nicht.
#include <dir.h> #include <direct.h> #include <string> #include <vector> #include <sstream> // ostringstream #define MAX_MOVIES 17771 char m_cCurrentPath[_MAX_PATH]; std::string m_cDatasetPath; std::vector< std::string > m_DatasetFilelist; const std::string ADD_PATH = "\\..\\data"; //generate file structure getcwd(m_cCurrentPath, _MAX_PATH); m_cDatasetPath = m_cCurrentPath + ADD_PATH; std::cout << "Current path is " << m_cCurrentPath << std::endl; std::cout << "Data path is " << m_cDatasetPath << std::endl; for (int k = 0; k < MAX_MOVIES; k++){ std::ostringstream buf; buf << m_cDatasetPath << "\\SomeFileID" << k; m_DatasetFilelist.push_back( buf.str() ); std::cout << m_DatasetFilelist.back() << std::endl; }.. und sparst noch einen Haufen Arbeit im Destruktor.
Gruß Werner
-
drakon schrieb:
#include <string> #include <vector> ... std::vector<std::string> > paths; paths.push_back ( "c:\folder1\folder2\file1.txt" ); paths.push_back ( "c:\folder1\folder2\file2.txt" ); ...wenn die pfade automatisch erstellt werden sollen, "c:\folder1\folder2\file1" ist konstant, dann soll filgen 0000001 bis 0123445 (aufsteigend durchnummeriert. Wie krieg ich das rein?
so?
[cpp] #include <string> #include <vector> ... std::vector<std::string> > paths; string str1 = "c:\folder1\folder2\file1" ; string str2; for (i = 0; i < 123445; i++){ str2 << i; paths.push_back ( "c:\folder1\folder2\file" + str2 + ".txt" ); } [/cpp]nur... wie krieg ich die "führenden nullen rein", dass die filenames immer genau gleich lang sind also 0000001 aber 0100000...
-
ANGs_Pino schrieb:
nur... wie krieg ich die "führenden nullen rein", dass die filenames immer genau gleich lang sind also 0000001 aber 0100000...
so:
for (int k = 0; k < MAX_MOVIES; k++){ std::ostringstream buf; buf.fill('0'); buf << m_cDatasetPath << "\\SomeFileID" << std::setw(7) << k; m_DatasetFilelist.push_back( buf.str() ); std::cout << m_DatasetFilelist.back() << std::endl; }erfordert noch #include <iomanip>
Gruß Werner