» »

[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...

#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:
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 ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++] Kopiranje char arraya v drug char array

Oddelek: Programiranje
71285 (1156) win64
»

[baze] Povezava do slike ali BLOB?

Oddelek: Programiranje
101666 (1463) BlueRunner
»

[C++] Stack corrupted? Memory allocation f****p?

Oddelek: Programiranje
141380 (1147) BigWhale
»

[Java]Problem z argumenti

Oddelek: Programiranje
6955 (885) ]Fusion[
»

int to string v c++

Oddelek: Programiranje
272340 (2068) OwcA

Več podobnih tem