Forum » Programiranje » [c++] izpis vseh datotek iz direktorija v spremenljivko
[c++] izpis vseh datotek iz direktorija v spremenljivko
imp ::
Oj
Delam na enemu špilu in imam probleme z izpisom in handlanjem vseh datotek iz določenega folderja. Gre za špil, v katerem se dva tankca bojujeta med sabo, in v enem od screenov izbiraš, katero mapo boš igral.
Najdu sem tole kodo za izpis datotek iz direktorija...
...ki deluje perfektno, ampak zaplete se, ko hočem prepisati niz teh datotek v spremenljivko. Tukaj je koda iz špila, ki se ukvarja s tem:
Problem je v glavnem v tem, da f.cFileName vrne char[255] (oz. neko podobno godljo), ki ga nikakor ne morem prepisati v char*.
Najbolje kar mi je uspelo je primer zgoraj s string.c_str(), ampak mislim da je problem to da c_str() vrne const char*. Je pa do zdaj najboljši približek tega, kar hočem.
Izpis izgleda takole:
(število datotek je OK, ponavljajoče se datoteke pa niso ok) :/
Če se komu kaj svita kako bi to rešil naj mi prosim pove, hvala.
Delam na enemu špilu in imam probleme z izpisom in handlanjem vseh datotek iz določenega folderja. Gre za špil, v katerem se dva tankca bojujeta med sabo, in v enem od screenov izbiraš, katero mapo boš igral.
Najdu sem tole kodo za izpis datotek iz direktorija...
#include <stdio.h> #include <iostream> #include <windows.h> int main(void) { WIN32_FIND_DATA f; HANDLE h = FindFirstFile("./*", &f); if(h != INVALID_HANDLE_VALUE) { do { puts(f.cFileName); } while(FindNextFile(h, &f)); } else { fprintf(stderr, "Error opening directory\n"); } std::cin.get(); return 0; } }
...ki deluje perfektno, ampak zaplete se, ko hočem prepisati niz teh datotek v spremenljivko. Tukaj je koda iz špila, ki se ukvarja s tem:
#define MAX_MAPS 999 class MapList { public: char *mapname[MAX_MAPS]; int mapcount; int GetMaps(); }; int MapList :: GetMaps() { string s; mapcount = 0; WIN32_FIND_DATA f; HANDLE h = FindFirstFile("./maps/*.map",&f); if (h != INVALID_HANDLE_VALUE) { do { s = f.cFileName; mapname[mapcount] = (char*)s.c_str(); mapcount++; } while (FindNextFile(h,&f)); } else { // error return 1; } return 0; }
Problem je v glavnem v tem, da f.cFileName vrne char[255] (oz. neko podobno godljo), ki ga nikakor ne morem prepisati v char*.
Najbolje kar mi je uspelo je primer zgoraj s string.c_str(), ampak mislim da je problem to da c_str() vrne const char*. Je pa do zdaj najboljši približek tega, kar hočem.
Izpis izgleda takole:
(število datotek je OK, ponavljajoče se datoteke pa niso ok) :/
Če se komu kaj svita kako bi to rešil naj mi prosim pove, hvala.
imp ::
Našel rešitev:
Če komu pomaga, LP :>
std::vector<std::string> mapname; // namesto mapname[MAX_MAPS]; mapname.push_back(f.cFileName); // za pisanje v vektor mapname[n].c_str(); // n-ta mapa mapname.clear(); // za brisanje vseh elementov mapname.size(); // stevilo map (namesto mapcount)
Če komu pomaga, LP :>
Zgodovina sprememb…
- spremenil: imp ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C++] Kopiranje char arraya v drug char arrayOddelek: Programiranje | 1285 (1156) | win64 |
» | [baze] Povezava do slike ali BLOB?Oddelek: Programiranje | 1666 (1463) | BlueRunner |
» | [C++] Stack corrupted? Memory allocation f****p?Oddelek: Programiranje | 1380 (1147) | BigWhale |
» | [Java]Problem z argumentiOddelek: Programiranje | 955 (885) | ]Fusion[ |
» | int to string v c++Oddelek: Programiranje | 2340 (2068) | OwcA |