С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923

Найти файлы в папке и записать в Memo без формата

29.03.2019, 05:19. Показов 1821. Ответов 14

Студворк — интернет-сервис помощи студентам
4ю ночь мучаюсь, всё без толку. Уже бомбит очень сильно! Какие вариации только уж и не пробовал, всё не то.
Задача, найти в папке все файлы и записать нэймы в вектор1 и форматы в вектор 2.
Казалось бы, всё просто... но уже голова кипит и очень-очень сильно горит очаг!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

C++
1
vector <wchar_t*> fasf;
C++
1
2
3
4
5
6
7
8
9
10
11
    wstring folder(L"C:\\Users\\array\\Desktop\\Alphavit\\*.mp3");
    HANDLE search_file;
    WIN32_FIND_DATA aa;
    search_file = FindFirstFile(folder.c_str(), &aa);
 
 
    for(int i = 0;FindNextFile(search_file, &aa) != NULL; i++)
    {
        fasf.push_back(aa.cFileName);
    }
    Memo1->Lines->Add(fasf[0]);///вывод на экран вектора
Буду очень сильно благодарен!

Добавлено через 1 минуту
fasf[0] по идее должен вывести "А",а выводит "Я"

Добавлено через 27 секунд
C++11, не 17
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.03.2019, 05:19
Ответы с готовыми решениями:

Как удалить все файлы в папке без WinAPI ?
Ну собственно дубль шапки: Как удалить все файлы в папке без WinAPI ? Тоесть на чистом C++ без BOOST, QT и пр и не на последнем...

Найти все файлы в папке в которой есть символ "a" и записать их последние строки в файл
У самого никак не получается только по кускам сделать : find . -maxdepth 1 -type f -iname &quot;*a*&quot; # выводит файлы в названии которых...

Записать на диск файлы формата .img , .sub , .ccd
Господа эксперты, выручайте, требуется записать образ на диск CD-R(игры на PS1), но есть загвоздка. Файлы с таким расширением не могу никак...

14
Just Do It!
 Аватар для XLAT
4201 / 2657 / 654
Регистрация: 23.09.2014
Сообщений: 8,958
Записей в блоге: 3
29.03.2019, 13:44
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
///ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
/// Получаем имена файлов без расширений в текущей директории.
///ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
#include <iostream>
#include <string>
#include <vector>
#include <Windows.h>
 
int main()
{   setlocale(0, "");
    using namespace std;
    WIN32_FIND_DATA fd;
 
    vector<string> filenames;
 
    HANDLE hFind = FindFirstFile("*.*", &fd);
    if (INVALID_HANDLE_VALUE != hFind)
    {
        do
        {   filenames.push_back(&fd.cFileName[0]);
        } while (FALSE != FindNextFile(hFind, &fd));
 
        FindClose(hFind);
    }
 
    for(size_t i =0; i < filenames.size(); ++i )
    {
        /// Удаляем расширения файлов:-----------------------------------------|
        std::string::size_type npos1 = filenames[i].rfind (".");
        if(npos1 != std::string::npos)
        {   std::string::size_type npos2 = filenames[i].back ();
            filenames[i].erase(npos1,  npos2-npos1);
        }
 
        cout << filenames[i] << endl;
    }
 
    return 0;
}
0
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
29.03.2019, 17:07  [ТС]
0
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
29.03.2019, 17:08  [ТС]
У меня с конвертацией всё плохо. Если ToString()или .c_str() не помогло, я бессилен
0
Just Do It!
 Аватар для XLAT
4201 / 2657 / 654
Регистрация: 23.09.2014
Сообщений: 8,958
Записей в блоге: 3
29.03.2019, 18:26
Цитата Сообщение от abortion error Посмотреть сообщение
я бессилен
В настройках проекта установите character set ---> Use Multi-Byte Character Set
Миниатюры
Найти файлы в папке и записать в Memo без формата  
0
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
29.03.2019, 18:28
https://en.cppreference.com/w/cpp/filesystem/path
https://www.codingame.com/playgrounds/5659
Если уметь гуглить, то и голова кипеть не будет
0
Just Do It!
 Аватар для XLAT
4201 / 2657 / 654
Регистрация: 23.09.2014
Сообщений: 8,958
Записей в блоге: 3
29.03.2019, 18:45
или используйте уникод аналоги, например:
WIN32_FIND_DATAW вместо WIN32_FIND_DATA
std::wstring вместо std::string
и тд и тп..

Добавлено через 4 минуты
Цитата Сообщение от Pashka Durov Посмотреть сообщение
Если уметь гуглить, то и голова кипеть не будет
у меня это гуано не работает((
вот в такой среде:
MinGW_GCC8.2 Проблемы с компиляцией std::filesystem
у вас работает???
0
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
29.03.2019, 19:32  [ТС]
по идее всё что я хоче реализовать легко сделать на 17++, но мне нужно на 11

Добавлено через 1 минуту
такой пункт отсутствует, среда разработки RAD Studio 10.3
0
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
29.03.2019, 20:14
Цитата Сообщение от XLAT Посмотреть сообщение
у вас работает???
да, gcc version 8.2.0 (Ubuntu 8.2.0-7ubuntu1)
0
Just Do It!
 Аватар для XLAT
4201 / 2657 / 654
Регистрация: 23.09.2014
Сообщений: 8,958
Записей в блоге: 3
30.03.2019, 09:11
Цитата Сообщение от abortion error Посмотреть сообщение
такой пункт отсутствует, среда разработки RAD Studio 10.3
странно, откуда ваша rad нашла в WIN32_FIND_DATA тип wchar_t
в студии там CHAR'ы.

ок, вот испытайте для wchar_t вариант.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
///ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
/// Получаем имена файлов без расширений в текущей директории.
///ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
#include <iostream>
#include <string>
#include <vector>
#include <Windows.h>
 
#include <conio.h>
 
 
int main()
{   setlocale(0, "");
    using namespace std;
    WIN32_FIND_DATAW fd;
 
    vector<wstring> filenames;
 
    HANDLE hFind = FindFirstFileW(L"*.*", &fd);
    if (INVALID_HANDLE_VALUE != hFind)
    {
        do
        {   filenames.push_back(&fd.cFileName[0]);
        } while (FALSE != FindNextFileW(hFind, &fd));
 
        FindClose(hFind);
    }
 
    for(size_t i =0; i < filenames.size(); ++i )
    {
        /// Удаляем расширения файлов:-----------------------------------------|
        std::wstring::size_type npos1 = filenames[i].rfind (L".");
        if(npos1 != std::string::npos)
        {   std::string::size_type npos2 = filenames[i].back ();
            filenames[i].erase(npos1,  npos2-npos1);
        }
 
        wcout << filenames[i] << endl;
    }
 
    _getch();//#include <conio.h>
    return 0;
}
в VS2010 все отлично работает.
0
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
01.04.2019, 01:40  [ТС]
RAD Studio 10.3

Хорошо, сейчас тестану на VS. Проблема в том, что в VS у меня другие ошибки при компиляции кода, который у меня работает в RAD. Как-то странно.
0
Just Do It!
 Аватар для XLAT
4201 / 2657 / 654
Регистрация: 23.09.2014
Сообщений: 8,958
Записей в блоге: 3
01.04.2019, 11:42
Лучший ответ Сообщение было отмечено abortion error как решение

Решение

abortion error,
вот поправил полностью на wstring,
и вместо back заменил на length:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
///ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
/// Получаем имена файлов без расширений в текущей директории.
///ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
#include <iostream>
#include <string>
#include <vector>
#include <Windows.h>
 
#include <conio.h>
 
 
int main()
{   setlocale(0, "");
    using namespace std;
    WIN32_FIND_DATAW fd;
 
    vector<wstring> filenames;
 
    HANDLE hFind = FindFirstFileW(L"*.*", &fd);
    if (INVALID_HANDLE_VALUE != hFind)
    {
        do
        {   filenames.push_back(&fd.cFileName[0]);
        } while (FALSE != FindNextFileW(hFind, &fd));
 
        FindClose(hFind);
    }
 
    for(size_t i =0; i < filenames.size(); ++i )
    {
        /// Удаляем расширения файлов:-----------------------------------------|
        std::wstring::size_type npos1 = filenames[i].rfind (L".");
        if(npos1 != std::wstring::npos)
        {   std::wstring::size_type npos2 = filenames[i].length();
            filenames[i].erase(npos1,  npos2-npos1);
        }
 
        wcout << filenames[i] << endl;
    }
 
    _getch();//#include <conio.h>
    return 0;
}
vs2010: полёт нормальный.

Что касается вашей ошибки:
[bcc32] 'back' is not member of wstring
то тут требуется поддержка C++11
очевидно ваш компилятор её лишен или галочку где-нить поставить надо бы)
1
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
18.01.2021, 13:09  [ТС]
тест
0
Just Do It!
 Аватар для XLAT
4201 / 2657 / 654
Регистрация: 23.09.2014
Сообщений: 8,958
Записей в блоге: 3
18.01.2021, 14:32
Цитата Сообщение от limeniye Посмотреть сообщение
тест
что не так?
1
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
18.01.2021, 14:54  [ТС]
XLAT, https://www.cyberforum.ru/abou... st15189828. Номер поста 582.
Хотел сделать скрин-шот.

Отвечаю на Ваш вопрос: всё так.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.01.2021, 14:54
Помогаю со студенческими работами здесь

Скопировать в папке файлы из подкаталога без каталога
Есть папка D:\FPS\papka_in в которой есть еще одна папка, имени которой я незнаю(имя каждый раз разное). Нужно файлы из этой подпапки...

Найти файлы за определенную дату в папке и подпапках
Доброго времени суток всем! мне необходима помощь в написание vbs скрипта. Есть пака в которой лежат подпапки и файлы. Необходимо...

Найти в папке все файлы с одинаковым расширением
Задача изложена в заголовке. Заранее спасибо.

Найти файлы за определенную дату в папке и подпапках
Доброго времени суток всем! мне необходима помощь в написание скрипта. Есть пака в которой лежат подпапки и файлы. Необходимо написать...

Как найти в папке файлы, созданные вчера
Есть папка с фаилами. Как найти файлы, созданные только вчера? Спасибо Что-то типа ...... foreach (FileInfo f in...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru