Cómo encontrar y leer todos los archivos .txt en una unidad usando C ++

Tendría que usar std :: experimental :: filesystem :: recursive_directory_iterator – cppreference.com – se agregó recientemente a C ++ como una especificación técnica y el soporte está apareciendo en Microsoft y pronto GCC, pero siempre puede usar boost: Filesystem Referencia, por ejemplo así:

#include
#include
#incluye
#include
#include
#include
espacio de nombres fs = boost :: sistema de archivos;
int main ()
{
std :: string w = “prueba”; // palabra a buscar
for (auto & p: fs :: recursive_directory_iterator (“C:”)) // ruta raíz
if (p.path (). extension () == “.txt”) {// extensión para filtrar
auto f = std :: ifstream (p.path (). c_str ()); //
if (find (std :: istream_iterator (f), {}, w)! = std :: istream_iterator {})
std :: cout << "Encontrado" << std :: citado (w) << "en" << p << '\ n';
}
}

Aquí hay un ejemplo que se ejecuta en Visual Studio en línea (ya que mencionas “unidad” supongo que Windows): compila Visual Studio C ++ en línea

Funciona de la misma manera en Linux, excepto que la ruta raíz se ve diferente: Coliru Viewer