Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
фру зе сторм
0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 3
#1

Считывание файлов в папке с++ - C++

08.07.2015, 16:28. Просмотров 608. Ответов 5
Метки нет (Все метки)

Здравствуйте, уважаемые знатоки!
Задача простая: есть папка; в папке много файлов; нужно считывать из папки эти файлы и каким-то образом обрабатывать.
Хотел использовать следующий код, однако ругается на первую переменную функции FindFirstFile (argument of type "const char *" is incompatible with parametr of type "LPCWSTR")
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
   WIN32_FIND_DATA win;
   char* buff = new char[255];
       HANDLE han = FindFirstFile("G:\\dir\\*.doc*",&win);
       if(han != INVALID_HANDLE_VALUE)
       {
           strcpy(buff,win.cFileName);
           strcat(buff," , ");
          while(FindNextFile(han,&win))
          {
               strcat(buff,win.cFileName);
               strcat(buff," , ");
          }
          std::cout << buff << std::endl;
   CloseHandle(han);
       }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2015, 16:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считывание файлов в папке с++ (C++):

Считывание с файлов! - C++
Даны файлы, вида part.0, part.1, part.2 и так далее(точное кол-во этих файлов неизвестно)! Вопрос: считать с этих файлов информацию и...

Считывание из файлов - C++
Нужно составить программу на С++, программа считывания из файлов, помогите кто может

Считывание из файлов - C++
Нужно составить программу на С++, программа считывания из файлов, помогите кто может

Определить количество файлов в указанной папке - C++
Хочу загрузить текстуры по текущему номеру во время цикла подсчёта файлов в папке. Что-то вроде такого for(int i = 0; i &lt;...

Считывание файлов и консоли с++ - C++
Почему программа не считывает а с консоли? #include &lt;iostream&gt; #include &lt;cstdio&gt; using namespace std; int main() { ...

Как узнать количество файлов в каталоге (папке) ? - C++
Есть ли какая-то функция для этого? Нигде найти не могу

5
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,065
Завершенные тесты: 1
08.07.2015, 16:37 #2
Цитата Сообщение от фру зе сторм Посмотреть сообщение
FindFirstFile("G:\\dir\\*.doc*",&win);
C++
1
FindFirstFile(L"G:\\dir\\*.doc*",&win);
1
фру зе сторм
0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 3
08.07.2015, 17:05  [ТС] #3
Raali, ещё такой вопрос:

vector<string> get_all_files_names_within_folder(string folder)
{
vector<string> names;
WIN32_FIND_DATA fd;
HANDLE hFind = ::FindFirstFile(L"dir", &fd);
if(hFind != INVALID_HANDLE_VALUE) {
do {
if(! (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) {
names.push_back(fd.cFileName);
}
}while(::FindNextFile(hFind, &fd));
::FindClose(hFind);
}
return names;
}

names.push_back(fd.cFileName) не прокатывает, потому что fd.cFileName возвращает весьма странный тип. Как здесь привести?
0
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,065
Завершенные тесты: 1
08.07.2015, 18:21 #4
а какой тип у вектора name
и какой возвращает cFileName ?
0
Геомеханик
636 / 443 / 318
Регистрация: 26.06.2015
Сообщений: 1,018
08.07.2015, 18:37 #5
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
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <string>
#include <vector>
 
#ifdef _UNICODE
typedef std::wstring tstring;
#else
typedef std::string tstring;
#endif
 
 
BOOL get_files(LPCTSTR folder, std::vector<tstring>* files, 
                    BOOL full_path = FALSE){
    WIN32_FIND_DATA inf;
    LPCTSTR pf = _tcsrchr(folder, _T('\\'));
 
    HANDLE  fp = FindFirstFile(folder, &inf);
    if(fp == INVALID_HANDLE_VALUE)
        return FALSE;
 
    files->clear();
    do {
        if(! (inf.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){
            if(full_path){ // если указан полный путь к файлу
                files->push_back( tstring(folder, pf + 1) );
                files->back().append(inf.cFileName);
            } else
                files->push_back(inf.cFileName);
        }
    } while(FindNextFile(fp, &inf));
 
    FindClose(fp);
    return TRUE;
}
 
 
int main(void){
    const TCHAR fn[] = _T("G:\\dir\\*.doc*");
    
    std::vector<tstring> fs;
    get_files(fn, &fs);
    std::vector<tstring>::const_iterator i;
    for(i = fs.begin(); i != fs.end(); ++i)
        _putts( i->c_str() );
    _puttchar(_T('\n'));
 
    // получить файлы с полным путём
    get_files(fn, &fs, TRUE);
    for(i = fs.begin(); i != fs.end(); ++i)
        _putts( i->c_str() );
 
    _gettchar();
    return 0;
}
1
фру зе сторм
0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 3
08.07.2015, 21:27  [ТС] #6
Геомеханик, великолепный код! Огромное спасибо!
0
08.07.2015, 21:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2015, 21:27
Привет! Вот еще темы с ответами:

Поиск всех файлов в папке и вывод их имен - C++
Пытаюсь сделать программку, которая будет выводить название всех файлов формата .txt в определенной папке, но что-то не могу разобраться с...

Считывание и запись .bmp файлов - C++
Здравствуйте. Помогите, пожалуйста, разобраться почему не работает сохранение bmp файла. Открываю 1 файл, загружаю его и все данные...

считывание строк из потока файлов - C++
люди плз помогите разобраться. в конце компиляции выдает сообщение &quot;error C2228: left of '.close' must have class/struct/union&quot;....

Считывание файлов в двумерный массив - C++
Всем привет, просьба помочь с кодом. Есть текстовый файл с разными спецсимволами(@, &amp;, *, % и.т.д.) как считать определенные...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru