10 AĞUSTOS 2009, PAZARTESİ
Boost ile bir dizin yineleme dosyaları için bir maske kullanabilir miyim?
Bir dizin "somefiles*.gibi bir şey eşleşen tüm dosyalar üzerinde yineleme istiyorum". txt Boost::dosya sisteminin bir şeyler yapmak için yerleşik, ya da bir düzenli ifade ya da her yaprak karşı bir şey gerekir mi()?
CEVAP
11 AĞUSTOS 2009, Salı
EDİT: Açıklamalarda belirtildiği gibi, aşağıdaki kod boost::filesystem
Sürüm v3 öncesi için geçerlidir. İçin v3, yorum önerileri bakın.
boost::filesystem
joker arama yok, dosyaları kendiniz filtre var.
Bu kod örneği boost::filesystem
ile bir dizinin içeriği'nın 4 ** boost::regex
ile filtreleme: . ayıklanıyor
const std::string target_path( "/my/directory/" );
const boost::regex my_filter( "somefiles.*\.txt" );
std::vector< std::string > all_matching_files;
boost::filesystem::directory_iterator end_itr; // Default ctor yields past-the-end
for( boost::filesystem::directory_iterator i( target_path ); i != end_itr; i )
{
// Skip if not a file
if( !boost::filesystem::is_regular_file( i->status() ) ) continue;
boost::smatch what;
// Skip if no match
if( !boost::regex_match( i->leaf(), what, my_filter ) ) continue;
// File matches, store it
all_matching_files.push_back( i->leaf() );
}
Eğer yerleşik dizin ile kullanıma hazır bir sınıf filtre arıyorsanız (.*.* 7 Qt) bakabilirsiniz
Bunu Paylaş:
Yineleme tüm dosyaları bir dizin için ...
Nasıl adlarında boşluk ve tırnak dosya...
Nasıl dizin içindeki $ng-tekrar bir sı...
Nasıl Git deposu için boş bir dizin ek...
Nasıl Gıt bir çalışma dizini içine boş...