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

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

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

Author24 — интернет-сервис помощи студентам
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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2019, 05:19
Ответы с готовыми решениями:

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

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

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

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

14
Just Do It!
3841 / 2288 / 636
Регистрация: 23.09.2014
Сообщений: 7,084
Записей в блоге: 2
29.03.2019, 13:44 2
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
1181 / 623 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
29.03.2019, 17:07  [ТС] 3
Найти файлы в папке и записать в Memo без формата
0
1181 / 623 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
29.03.2019, 17:08  [ТС] 4
У меня с конвертацией всё плохо. Если ToString()или .c_str() не помогло, я бессилен
0
Just Do It!
3841 / 2288 / 636
Регистрация: 23.09.2014
Сообщений: 7,084
Записей в блоге: 2
29.03.2019, 18:26 5
Цитата Сообщение от abortion error Посмотреть сообщение
я бессилен
В настройках проекта установите character set ---> Use Multi-Byte Character Set
Миниатюры
Найти файлы в папке и записать в Memo без формата  
0
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
29.03.2019, 18:28 6
https://en.cppreference.com/w/cpp/filesystem/path
https://www.codingame.com/playgrounds/5659
Если уметь гуглить, то и голова кипеть не будет
0
Just Do It!
3841 / 2288 / 636
Регистрация: 23.09.2014
Сообщений: 7,084
Записей в блоге: 2
29.03.2019, 18:45 7
или используйте уникод аналоги, например:
WIN32_FIND_DATAW вместо WIN32_FIND_DATA
std::wstring вместо std::string
и тд и тп..

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

Добавлено через 1 минуту
такой пункт отсутствует, среда разработки RAD Studio 10.3
0
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
29.03.2019, 20:14 9
Цитата Сообщение от XLAT Посмотреть сообщение
у вас работает???
да, gcc version 8.2.0 (Ubuntu 8.2.0-7ubuntu1)
0
Just Do It!
3841 / 2288 / 636
Регистрация: 23.09.2014
Сообщений: 7,084
Записей в блоге: 2
30.03.2019, 09:11 10
Цитата Сообщение от 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
1181 / 623 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
01.04.2019, 01:40  [ТС] 11
RAD Studio 10.3
Найти файлы в папке и записать в Memo без формата

Хорошо, сейчас тестану на VS. Проблема в том, что в VS у меня другие ошибки при компиляции кода, который у меня работает в RAD. Как-то странно.
0
Just Do It!
3841 / 2288 / 636
Регистрация: 23.09.2014
Сообщений: 7,084
Записей в блоге: 2
01.04.2019, 11:42 12
Лучший ответ Сообщение было отмечено 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
1181 / 623 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
18.01.2021, 13:09  [ТС] 13
тест
0
Just Do It!
3841 / 2288 / 636
Регистрация: 23.09.2014
Сообщений: 7,084
Записей в блоге: 2
18.01.2021, 14:32 14
Цитата Сообщение от limeniye Посмотреть сообщение
тест
что не так?
1
1181 / 623 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
18.01.2021, 14:54  [ТС] 15
XLAT, https://www.cyberforum.ru/abou... st15189828. Номер поста 582.
Хотел сделать скрин-шот.

Отвечаю на Ваш вопрос: всё так.
1
18.01.2021, 14:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2021, 14:54
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru