Dateien zählen in einem Verzeichnis -C++

DerSiebte

Mitglied
hallo zusammen..

Gibt es eine Funktion um Dateien in einem bestimmten Verzeichnis zu zählen?
Wenn ja.. wie heisst sie?
Hab schon gegoogelt aber hab nichts gefunden.:google:

Oder kann mir jemand erklären, wie ich das machen könnte

Danke

DerSiebte
 
Hallo, vielleicht kann dir dieser Code dazu weiterhelfen. Ich habe jetzt leider nicht die Zeit den Code genau an deine Bedürfnisse anzupassen. Aber das dürftest du eigentlich hinkriegen. Hab das Code Beispiel einfach mal schnell aus einem Projekt kopeerit deswegn dind dort sachen drin die du bestimmt nichts brauchst. Aber das erkälrt sich von selbst!

Gruß und viel Erfolg

Code:
//Diese Funktion sucht die entsprechenden Dateien zusammen
void XML::sucheDatei(std::string datenOrt, std::string suchKriterium){

WIN32_FIND_DATA FData;  
    HANDLE hSearch;
    BOOL MoreFiles = FALSE;  
    int cnt_dir = 0, cnt_file  = 0; //Zum Zählen von Ordnern und Datein
	
	int j=0;
	//for(j=2;j<=OrdnerAnzahl-1;j++){
	
	std::string suchString;
	std::string removeString;

	suchString.insert(0,datenOrt.data());
	suchString.insert(suchString.length(),"\\");
	//suchString.insert(suchString.length(),Ordnername[j].data());
	//suchString.insert(suchString.length(),"\\");
	suchString.insert(suchString.length(),suchKriterium);

	//printf("suchstring: %s" ,suchString.data());
	
	hSearch = FindFirstFile(suchString.data(),&FData);  

	//printf("\n\nSo jetzt in sucheDatei: %s\n\n",suchString.c_str());


	int i=0;
	
	if (hSearch == INVALID_HANDLE_VALUE){ 
	//printf("-1");
	}
	
	do{
		std::string dateiname;	
		if (FData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY){  
				//Den Ordnernamen ausgeben         
			    //printf("%s\n", FData.cFileName);
				//Ordnername[i]=FData.cFileName;
				//cnt_dir++; // Ordnerzähler um 1 erhöhen 
			} 
			else{
				removeString.erase(0,removeString.length());
				//printf("\ndatei: %s",FData.cFileName);
				
				removeString.insert(0,datenOrt.data());
				removeString.insert(removeString.length(),"\\");
				//removeString.insert(removeString.length(),Ordnername[j].data());
				//removeString.insert(removeString.length(),"\\");
				removeString.insert(removeString.length(),FData.cFileName);

				
				//dateiname.insert(0,suchString.data());
				//dateiname.insert(suchString.length(), FData.cFileName);
				//printf("\nname: %s", removeString.data());
				
				//Ordnername[i]=FData.cFileName;  //Wenn es eine Datei ist nicht mit einlesen
				cnt_file++;

				remove(removeString.data());
			}
	
	i++;
	MoreFiles = FindNextFile(hSearch,&FData);  
	} while (MoreFiles);  //Ende do while
         
    FindClose(hSearch); 

//	}//ende for
	DateiAnzahl=cnt_file;
		
	//Also ich beginne die for Schleife erst bei 2 da die beiden ersten Elemente nicht "wirklich" belegt sind
	//for(i=2;i<=Ordnername[i].length();i++)
	//	printf("\nOrdnername %i: %s",i ,Ordnername[i].c_str());

	//OrdnerAnzahl=cnt_dir-2;  //Ich zieh hier 2 ab da die ersten beiden Sachen nicht mit Einträgen belegt sind

	//fprintf(ausRTK,"%c",'\0');
	
} //ende sucheDatei
 
Code:
void XML::sucheDatei(std::string datenOrt, std::string suchKriterium){

diese Zeile gibt bei mir 9 errors...
'XML' : is not a class or namespace name
'std' : is not a class or namespace name
und die anderen sind aus diesen 2 entstanden...

muss ich da was includieren oder was muss ich machen kann mir jemand helfen, bitte?

DerSiebte
 
also xml ist bei mir eine Klasse! Du musst die Methode in der Klasse mit den entsprechenden Methodenamen, Rückgabewert und Übergabeparameter bekannt machen.

Ja du musst auch den namespace benutzen.

Also viel Erfoilg damit
 
Zurück