15/04/21 19:59
AldoBaldo
Quel che ne so non è particolarmente aggiornato, ma credo che ti tocchi rivolgerti al sistema operativo, o a qualche libreria (che comunque si rivolgerà indirettamente al sistema operativo).
Per "scorrere" il contenuto di una cartella in Windows esistono FindFirstFile() e FindNextFile(). Prova a cercare nei vecchi thread di questo forum, mi sembra di ricordare che la questione sia già venuta fuori in passato.
Modifica del 19/4: devo perdere l'abitudine di rispondere a chi non ha gia' scritto almeno un tot di messaggi precedenti.
Ultima modifica effettuata da AldoBaldo 19/04/21 15:02
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
14/06/21 15:07
musical wrighter
Purtroppo anch'io come Fumetto sto cercando di mettere insieme un codice che compili e funzioni a questo scopo e fin'ora quel che mi pare ci vada più vicino siano i comandi find first file e find next file. Ma parlavi di array di chars. Invece la cosa più comoda se condo me sarebbe se fosse fattibile raccogliere i nomi dei file o delle sottocartelle quel che sono in un array dinamico di tipo string o wstring. Perché un nome non è composto da un singolo carattere. Saresti costretto a dichiarare tanti array quanti sono i file all'interno della cartella. Informazione quest'ultima che potresti anche non avere a priori
aaa
15/06/21 12:08
Carlo
Ultima modifica effettuata da Carlo 15/06/21 12:11
in programmazione tutto è permesso
15/06/21 13:50
Postato originariamente da musical wrighter:
Purtroppo anch'io come Fumetto sto cercando di mettere insieme un codice che compili e funzioni a questo scopo e fin'ora quel che mi pare ci vada più vicino siano i comandi find first file e find next file. Ma parlavi di array di chars. Invece la cosa più comoda se condo me sarebbe se fosse fattibile raccogliere i nomi dei file o delle sottocartelle quel che sono in un array dinamico di tipo string o wstring. Perché un nome non è composto da un singolo carattere. Saresti costretto a dichiarare tanti array quanti sono i file all'interno della cartella. Informazione quest'ultima che potresti anche non avere a priori
E qual è il problema? Non sei ancora riuscito con FindFirstFile/FindNextFile ?
Puoi usare gli array di array di chars, sai cosa sono?
Ultima modifica effettuata da 15/06/21 13:53
15/06/21 13:52
Postato originariamente da Fumetto:
Sto imparando ad usare il C++, (con Visual Studio 2019), sono alle prime armi:
vorrei leggere tutti i nomi dei files presenti in una specifica directory.
Sostanzialmente chiedo se esiste in C++ una funzione che ritorna (in una array di chars, oppure in una struttura od altro) i nomi di tutti i files presenti in una Directory esistente (dopo dovrò andare ad analizzare singolarmente questi files di testo, ma questo non è un problema)
Il C e il C++ non sanno nulla circa il trattamento del filesystem. Devi usare le funzioni specifiche di libreria del sistema che usi.
Se scrivi per Windows, utilizza le API FindFirstFile/FindNextFile. Cerca e studia bene la documentazione.
Ultima modifica effettuata da 15/06/21 13:53
15/06/21 13:56
Un semplice esempio di base, a partire dalla documentazione
docs.microsoft.com/en-us/windows/win32/api/fileapi/…
può essere il seguente
#include <windows.h>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<WIN32_FIND_DATA> files;
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
hFind = FindFirstFile(L"\*.*", &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
wcout << "FindFirstFile failed " << GetLastError() << endl;
return 1;
}
else
{
wcout << (FindFileData.cFileName) << endl;
files.push_back(FindFileData);
while (FindNextFile(hFind, &FindFileData))
{
wcout << FindFileData.cFileName << endl;
files.push_back(FindFileData);
}
FindClose(hFind);
}
return 0;
}
che usa un vector per memorizzare tutti i file/cartelle presenti nella root
Ultima modifica effettuata da 15/06/21 14:15