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 | 1411 (1282) | win64 |
| » | [baze] Povezava do slike ali BLOB?Oddelek: Programiranje | 1812 (1609) | BlueRunner |
| » | [C++] Stack corrupted? Memory allocation f****p?Oddelek: Programiranje | 1560 (1327) | BigWhale |
| » | [Java]Problem z argumentiOddelek: Programiranje | 1036 (966) | ]Fusion[ |
| » | int to string v c++Oddelek: Programiranje | 2468 (2196) | OwcA |
