<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893030</guid>
        <pubDate>Tue, 18 Jul 2023 15:08:46 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893030</link>
        <description><![CDATA[Gonarh: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=436489&view=findpost&p=3893028'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2023-07-18T14:17:54+00:00">18.07.23, 14:17</time></span><div class='quote '>Перл</div></div><br>
:wub: <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2023-07-18T18:09:35+03:00">18.07.23, 15:09</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=436489&view=findpost&p=3893028'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2023-07-18T14:17:54+00:00">18.07.23, 14:17</time></span><div class='quote '>Это его отличает от других ЯП, в которых регулярки используются в виде подключаемых библиотек.</div></div><br>
Даёшь pcre в каждый ЯП  :lol:]]></description>
        <author>Gonarh</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893028</guid>
        <pubDate>Tue, 18 Jul 2023 14:17:54 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893028</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=436489&view=findpost&p=3893025'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2023-07-18T13:44:48+00:00">18.07.23, 13:44</time></span><div class='quote '>(А некоторые так на них вообще и основаны даже. Да, Majestio  ?)</div></div><br>
На Перл намёкиваешь? :lol: Да, в Перле регулярки являются частью языка. Это его отличает от других ЯП, в которых регулярки используются в виде подключаемых библиотек.]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893025</guid>
        <pubDate>Tue, 18 Jul 2023 13:44:48 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893025</link>
        <description><![CDATA[Qraizer: Регулярки – штука довольно интересная. И востребована, не даром их поддержка есть во многих языках. (А некоторые так на них вообще и основаны даже. Да, <strong class='tag-b'>Majestio</strong> ;) ?) Для твоей задачи преобразования маски в регулярку достаточно знать, что:<ul class="tag-list"><li>. означает любой символ;</li><li>* означает, что предшествующий символ или группа повторяется произвольное количество раз, возможно 0; в некоторых грамматиках захватывает максимально возможное количество (т.н. жадное сопоставление);</li><li>? означает, что предшествующий символ * превращается в нежадный, т.е. захватывает наивозможный минимум раз;</li><li>&#092; означает, что следующий символ распознаётся как обычный, а не командный;</li><li>остальные... ну как остальные, кроме командных, их больше, чем я тут перечислил... символы сопоставляются в точности, как указаны.</li></ul>Т.е. маска, скажем FileTxt?2.* должна быть преобразована в регулярку FileTxt<span class="tag-color tag-color-named" data-value="red" style="color: red">.</span>2<span class="tag-color tag-color-named" data-value="orange" style="color: orange">&#092;.</span><span class="tag-color tag-color-named" data-value="blue" style="color: blue">.*?</span>, где <span class="tag-color tag-color-named" data-value="red" style="color: red">красный суть любой одиночный символ</span>, <span class="tag-color tag-color-named" data-value="orange" style="color: orange">оранжевый означает просто символ ., а не командный .</span> (т.е. не обозначает любой символ), а <span class="tag-color tag-color-named" data-value="blue" style="color: blue">синий означает нежадное</span> (в маске * работает именно нежадно) <span class="tag-color tag-color-named" data-value="blue" style="color: blue">количество любых символов</span>.<br>
Но естественно у регулярок куда больше возможностей. Так что я бы рекомендовал ими позаниматься. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2023-07-18T13:52:46+00:00">18.07.23, 13:52</time></span></span><br>
P.S. Маске *.* будет соответствовать .*?&#092;..*? :D]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893023</guid>
        <pubDate>Tue, 18 Jul 2023 12:41:12 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893023</link>
        <description><![CDATA[tumanovalex: Спасибо, буду разбираться.]]></description>
        <author>tumanovalex</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893022</guid>
        <pubDate>Tue, 18 Jul 2023 12:19:39 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893022</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=436489&view=findpost&p=3893013'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tumanovalex &#064; <time class="tag-quote__quoted-time" datetime="2023-07-18T11:58:56+00:00">18.07.23, 11:58</time></span><div class='quote '>при этом хочу, чтобы фильтровались все расширения</div></div><br>
<a class='tag-url' href='https://regex101.com/r/68smYi/1' target='_blank'>Ну вот пример регулярки</a>, которая одна фильтрует (ловит) файлы с пятью расширениями. Можно регулярку усложнить. Можно наоборот писать простые регулярки, но чекать в цикле набор регулярок. Основная идея - на привязываться к расширению файла, как к таковому, а использовать маску или маски файлов.]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893013</guid>
        <pubDate>Tue, 18 Jul 2023 11:58:56 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893013</link>
        <description><![CDATA[tumanovalex: Да я обратил внимание. Код проверил, отлично работает для конкретных и всех расширений. Действительно, что-то у меня в понятиях сбилось - сравниваю конкретной расширение с шаблоном и при этом хочу, чтобы фильтровались все расширения. Так что прошу прощения за навязанную глупую дискуссию.]]></description>
        <author>tumanovalex</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893012</guid>
        <pubDate>Tue, 18 Jul 2023 11:51:24 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893012</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=436489&view=findpost&p=3893009'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tumanovalex &#064; <time class="tag-quote__quoted-time" datetime="2023-07-18T11:17:18+00:00">18.07.23, 11:17</time></span><div class='quote '>Мне не понятно, каким должна быть переменная ext, чтобы вектора формировались из файлов с любыми расширениями.</div></div><br>
У тебя изначально неверный подход к формулировке задачи ... Смотри аналогию: &quot;Какой должна быть переменная int, чтобы она соответствовала любому значению?&quot;. Обычно так не бывает, и не может быть. <br>
Но хорошее решение есть - задавать переменную маской в виде регулярного выражения. И файлы искать не по &quot;расширению&quot; а по &quot;маске&quot;. Выше <strong class='tag-b'>Qraizer</strong> начал развивать эту мысль, но ты на это обратил недостаточно внимания, коль пытаешься решить своим изначально неправильным решением.]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893011</guid>
        <pubDate>Tue, 18 Jul 2023 11:47:52 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893011</link>
        <description><![CDATA[tumanovalex: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=436489&view=findpost&p=3893010'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2023-07-18T11:32:42+00:00">18.07.23, 11:32</time></span><div class='quote '>Перед сравнением выводи строки - да хоть printf-ом.<br>
</div></div><br>
Не понял, как это мне поможет. Я уже пробовал - extension() выводит расширение файла (&quot;.txt&quot;, &quot;.pdf&quot;, &quot;.cpp&quot; и др.). Как я понял, код Qraizer сравнивает расширение с возможными комбинациями символов и если расширение есть в этой комбинации - то пропускает определенное расширение или же пропускает все расширения. Как я понял, фильтр с &quot;== ext&quot; сработает только для конкретного расширения и не срабатывает для всех файлов. Т.е. нельзя задать строку для exp, которая позволила бы пропускать файлы с любым расширением. Поэтому остается либо использовать этот фильтр только для конкретных расширений, либо в общем случае использовать код Qraizer.]]></description>
        <author>tumanovalex</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893010</guid>
        <pubDate>Tue, 18 Jul 2023 11:32:42 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893010</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=436489&view=findpost&p=3892988'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tumanovalex &#064; <time class="tag-quote__quoted-time" datetime="2023-07-18T09:51:46+00:00">18.07.23, 09:51</time></span><div class='quote '>Каким должен быть exp? Пробовал &quot;*&quot;, &quot;.&quot;, &quot; &quot; - не получилось.</div></div><br>
Ответ простой - надо отлаживать программу.<br>
Методом тыка много не наработаешь.<br>
Ты строки сравниваешь тут ?:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">if (fs::path(dir_entry).extension() == ext)</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
Перед сравнением выводи строки - да хоть printf-ом.]]></description>
        <author>ЫукпШ</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893009</guid>
        <pubDate>Tue, 18 Jul 2023 11:17:18 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893009</link>
        <description><![CDATA[tumanovalex: Мне не понятно, каким должна быть переменная ext, чтобы вектора формировались из файлов с любыми расширениями. Если я указываю &quot;.txt&quot; или &quot;.pdf&quot;, то вектора формируются из файлов с указанными расширениями.<br>
Код Qraizer позволяет считывать как файлы с определенным расширением, так и все файлы в заданной директории. Причем отбора по признаку <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">fs::is_regular_file(dir_entry)</div></ol></div></div></div></div>, как я понял, не требуется. Как ему это удалось - я пока не разобрался. Но все-таки хотелось бы узнать, что нужно присвоить переменной ext, чтобы через фильтр <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">if (fs::path(dir_entry).extension() == ext)</div></ol></div></div></div></div> проходили все файлы, с любым расширением (чтобы убедиться, что это возможно или нет). Я уже попробовал несколько вариантов - ни один из них не прошел.]]></description>
        <author>tumanovalex</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893000</guid>
        <pubDate>Tue, 18 Jul 2023 11:02:40 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3893000</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=436489&view=findpost&p=3892999'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tumanovalex &#064; <time class="tag-quote__quoted-time" datetime="2023-07-18T10:14:50+00:00">18.07.23, 10:14</time></span><div class='quote '>А я не разобрался.</div></div><br>
Перевод описания:<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'><span class='tag-size' data-value='14' style='font-size:14pt;'><span class="tag-color tag-color-named" data-value="black" style="color: black">std::filesystem::path::extension</span></span></strong><br>
<br>
Возвращает расширение компонента filename generic-формата пути *this.<br>
<br>
Если компонент filename() пути общего формата содержит точку (.) и не является одним из специальных элементов файловой системы dot или dot-dot, то расширением является подстрока, начинающаяся с крайней правой точки (включая точку) и до конца имени пути.<br>
<br>
Если первым символом в имени файла является точка, то эта точка игнорируется (имя файла типа &quot;.profile&quot; не рассматривается как расширение).<br>
<br>
Если имя пути содержит либо ., либо ..., либо если filename() не содержит символа &#39;.&#39;, то возвращается пустой путь.<br>
<br>
Дополнительное поведение может быть определено реализациями для файловых систем, которые добавляют к расширениям дополнительные элементы (например, альтернативные потоки данных или имена наборов данных с разбиением на разделы).<br>
<br>
Переведено с помощью www.DeepL.com/Translator (бесплатная версия)</div></div><br>
Напиши, что именно тебе не понятно.]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3892999</guid>
        <pubDate>Tue, 18 Jul 2023 10:14:50 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3892999</link>
        <description><![CDATA[tumanovalex: Видимо, это для умных объяснений не надо. А я не разобрался.]]></description>
        <author>tumanovalex</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3892989</guid>
        <pubDate>Tue, 18 Jul 2023 10:06:54 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3892989</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=436489&view=findpost&p=3892988'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tumanovalex &#064; <time class="tag-quote__quoted-time" datetime="2023-07-18T09:51:46+00:00">18.07.23, 09:51</time></span><div class='quote '> Каким должен быть exp?</div></div><br>
<a class='tag-url' href='https://en.cppreference.com/w/cpp/filesystem/path/extension' target='_blank'>Глянь тут</a>, там в разделе <strong class='tag-b'>Example </strong>есть пример, не требующий объяснений.]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3892988</guid>
        <pubDate>Tue, 18 Jul 2023 09:51:46 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3892988</link>
        <description><![CDATA[tumanovalex: Спасибо большое, все отлично работает. Но все-таки хотелось бы узнать, как без маски выбирать все файлы в строке<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">if (fs::path(dir_entry).extension() == ext)</div></ol></div></div></div></div>. Каким должен быть exp? Пробовал &quot;*&quot;, &quot;.&quot;, &quot; &quot; - не получилось. Буду также изучать работу с регулярными выражениями, плохо понимаю, как они работают и создаются маски (раньше regex не использовал, хотя и понимал, что это штука очень нужная).]]></description>
        <author>tumanovalex</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3892959</guid>
        <pubDate>Mon, 17 Jul 2023 15:57:32 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3892959</link>
        <description><![CDATA[Qraizer: .txt <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2023-07-17T16:12:13+00:00">17.07.23, 16:12</time></span></span><br>
Вообще, мы привыкли, что наборы файлов задаются маской. Я не знаю, что у тебя за задача, но предположу, что будет лучше фильтровать как раз маской, а не расширением. Даже если расширения достаточно, просто маской привычнее. К сожалению, std::filesystem::directory_iterator (и его рекурсивный аналог) не умеют маски, что с моей точки зрения является недочётом. Так что фильтровать нужно будет руками. Я бы предложил &lt;regex&gt;:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp;std::string wildMask(ext);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;for (auto i = 0; i &#60; wildMask.length(); ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;if &nbsp; &nbsp; &nbsp;(wildMask[i] == &#39;.&#39;) wildMask.replace(i++, 1, &quot;\.&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;else if (wildMask[i] == &#39;*&#39;) wildMask.replace(i++, 1, &quot;.*?&quot;), ++i;</div><div class="code_line">&nbsp;&nbsp; &nbsp;else if (wildMask[i] == &#39;?&#39;) wildMask[i] = &#39;.&#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;std::regex mask(wildMask);</div><div class="code_line">/* ... */</div><div class="code_line">&nbsp;&nbsp;if (std::regex_match(dir_entry.path().filename().string(), mask))</div><div class="code_line">/* ...*/</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2023-07-17T16:15:22+00:00">17.07.23, 16:15</time></span></span><br>
Но есть нюанс: учитывается регистр. Под POSIX пофигу, но в винде это важно. Сделать поиск регистронезависимым можно в конструкторе std::regex:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">std::regex mask(wildMask, std::regex_constants::icase);</div></ol></div></div></div></div>]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3892958</guid>
        <pubDate>Mon, 17 Jul 2023 15:41:31 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3892958</link>
        <description><![CDATA[tumanovalex: Не знал об std::filesystem::is_directory(), теперь буду использовать. Заменил &quot;*.txt&quot; на &quot;txt&quot; - результат тот же]]></description>
        <author>tumanovalex</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3892957</guid>
        <pubDate>Mon, 17 Jul 2023 15:27:18 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3892957</link>
        <description><![CDATA[Qraizer: Ну, не вполне очевидно, конечно, но всё ж на поверхности: ты под ext передаёшь argv[3], который задаёшь маской, тогда как std::filesystem::path::extension() возвращает именно что расширение. Неудивительно, что .txt не совпадает с *.txt <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2023-07-17T15:30:37+00:00">17.07.23, 15:30</time></span></span><br>
P.S. А почему stat()? Почему не std::filesystem::is_directory()?]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3892954</guid>
        <pubDate>Mon, 17 Jul 2023 15:00:13 +0000</pubDate>
        <title>Фильтрация файлов в директории по расширению</title>
        <link>https://forum.sources.ru/index.php?showtopic=436489&amp;view=findpost&amp;p=3892954</link>
        <description><![CDATA[tumanovalex: В коде:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">static size_t CreateVectorsFiles(vector&#60;string&#62;&amp; vsFullname, vector&#60;string&#62;&amp; vsFilename, const char* dir, const char* ext)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;for (const fs::directory_entry&amp; dir_entry : fs::recursive_directory_iterator(dir))</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (fs::is_regular_file(dir_entry))</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if (fs::path(dir_entry).extension() == ext)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;vsFullname.push_back(dir_entry.path().string());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;vsFilename.push_back(fs::path(dir_entry).stem().string());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;return vsFilename.size();</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main(int argc, char* argv[])</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;setlocale(LC_ALL, &quot;Russian&quot;);</div><div class="code_line">&nbsp;&nbsp;for (int i = 0; i &#60; argc; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;cout &#60;&#60; argv[i] &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp;if (argc &#60; 4)</div><div class="code_line">&nbsp;&nbsp; &nbsp;DisplayMessage(&quot;\nНе указаны параметры программы - директория для обработки, директория для результатов обработки и расширение файлов!\n&quot;, false);</div><div class="code_line">&nbsp;&nbsp;struct stat sb;</div><div class="code_line">&nbsp;&nbsp;if (stat(argv[1], &amp;sb) != 0)</div><div class="code_line">&nbsp;&nbsp; &nbsp;DisplayMessage(&quot;\nДиректория для обработки не существует!\n&quot;, false);</div><div class="code_line">&nbsp;&nbsp;if (stat(argv[2], &amp;sb) != 0)</div><div class="code_line">&nbsp;&nbsp; &nbsp;DisplayMessage(&quot;\nДиректория для записи результатов не существует!\n&quot;, false);</div><div class="code_line">&nbsp;&nbsp;vector&#60;string&#62; vsFullname, vsFilename;</div><div class="code_line">&nbsp;&nbsp;if (CreateVectorsFiles(vsFullname, vsFilename, argv[1], argv[3]) == 0)</div><div class="code_line">&nbsp;&nbsp; &nbsp;DisplayMessage(&quot;\nДиректория для обработки не содержит файлов с заданным расширением!\n&quot;, false);</div><div class="code_line">&nbsp;&nbsp;if (!fs::is_empty(argv[2]))</div><div class="code_line">&nbsp;&nbsp; &nbsp;DisplayMessage(&quot;\nВ директории для обработки есть файлы! Очистите директорию!\n&quot;, false);</div><div class="code_line">&nbsp;&nbsp;system(&quot;pause&quot;);</div><div class="code_line">}</div></ol></div></div></div></div>получаю сообщение, что директория не содержит файлов с заданным расширением. Параметры отладки следующие:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&quot;D:\TestProgramsDir&quot; &quot;D:\TestProgramsDir\Res&quot; &quot;*.txt&quot;</div></ol></div></div></div></div>В первой директории (1 параметр) есть несколько поддиректорий с файлами с расширением txt. Проект и тестовую директорию прикрепил. Помогите, пожалуйста, исправить ошибку.<br>
<span class="b-attach" data-size="3816" data-hits="91" data-attach-id="64996" data-attach-post-id="3892954">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3892954&amp;attach_id=64996' title='Скачать файл' target='_blank'>TestProgramsDir.zip</a> (, : 91)
		</span><br>
<span class="b-attach" data-size="2846" data-hits="93" data-attach-id="64997" data-attach-post-id="3892954">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3892954&amp;attach_id=64997' title='Скачать файл' target='_blank'>cppProcFiles.zip</a> (, : 93)
		</span>]]></description>
        <author>tumanovalex</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	