Buon giorno a tutti. Come faccio in c++ a elencare a video tutti i file e le sottocartelle presenti nella directory dove si trova l'eseguibile ma selezionare e riprodurre l'audio solo dei file che terminano con .wav? In teoria substr dovrebbe funzionare. Ma l'eseguibile arrivato a quel punto termina e si richiude. pe bello che per l'operazione contraria funziona. Il codice da me scritto fin'ora è il seguente
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
#pragma comment(lib,"winmm.lib")
int main()
{
WIN32_FIND_DATA cartella;
HANDLE scanner;
scanner = FindFirstFile(L"\*.*", &cartella);
wstring nome = cartella.cFileName;
wcout << nome << endl; if(nome.substr(nome.size()-4,nome.size())== L".wav") { PlaySound(nome.c_str(), NULL, SND_FILENAME);}
while (FindNextFile(scanner, &cartella))
{
nome = cartella.cFileName;
wcout << nome << endl; if(nome.substr(nome.size()-4,nome.size())== L".wav") { PlaySound(nome.c_str(), NULL, SND_FILENAME); }
}
FindClose(scanner);
system("pause");
// in caso di wav da riprodurre non ce ne fossero per evitare che l'eseguibile si chiuda
}
Qualcuno mi sa dire dove sbaglio o se quest'istruzione può essere messa diversamente in modo che vada senza problemi?
Ho provato anche a sostituire .size()con .length() ma fa uguale. Che mi pare siano sinonimi.
Come accennavo in un altro mio codice faccio la cosa contraria. All'inizio uso FindFirstFile(L"\*.wav")
in modo che ignori tutti gli altri file e le sottocartelle
e successivamente wcout << nome.substr(0,nome.size()-4); PlaySound(nome.c_str(),NULL,SND_FILENAME);
e va perfettamente. Riproduce il brano musicale o quel che è ma scrive solo il titolo tagliando proprio l'estensione del file che tanto sappiamo che è .wav.
Grazie in anticipo attendo suggerimenti
e buona giornata a tutti