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

Поиск с консоли - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Насчёт функции memcpy() http://www.cyberforum.ru/cpp-beginners/thread53416.html
Начинаяю использовать эту функцию.Её синтаксис: void memcpy(void *to, const void *from, size_t count); Вопрос_1: Что такое size_t ? И вообще,зачем указателям тип воид? Они что,что-то...
C++ Ввести три числа и проверить, возможно ли из них составить арифметическую прогрессию ввести три числа и проверить возможно ли с них составить арифметическую прогрессию http://www.cyberforum.ru/cpp-beginners/thread53408.html
Передача параметров по ссылке C++
У кого есть рабочий вариант сего чуда ? (К примеру,функции квадратного корня).В учебнике не работает.
Присвоение типов в С++ C++
Как присвоить елементам массива mas_a елементы строки String.Массив имеет тип int,а String char?
C++ Вопрос по выносу кода в отдельный файл http://www.cyberforum.ru/cpp-beginners/thread53363.html
Вот если писать в С программу, очень много когда можно запутаться ... Можно ли как то вынести часть кода в файл. (именно файл, база не нужна) Например если есть большой массив, можно ли его...
C++ Х в квадрате каким образом мжно делать что бы Х выводился на экарн со степенем? подробнее

Показать сообщение отдельно
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.02.2012, 19:16
Просто вывод путей, но переделать под удаление несложно.

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <locale.h>
 
#define MAX_SIZE 512
 
#define __DEBUG
 
void show_files(const wchar_t * _path, const wchar_t * mask, char Recursive )
{
        WIN32_FIND_DATA data;
        HANDLE h;
        wchar_t temp[MAX_SIZE], nextpath[MAX_SIZE], path[MAX_SIZE];
        int n, len;
 
        wcscpy(path, _path);
 
        len = wcslen(_path);
 
        if ( _path[ len - 1] != '\\' )
        {
                path[len] = '\\';
                path[len + 1] = '\0';
        }
 
        wcscpy(temp, path);
        wcscat(temp, mask);
 
        h = FindFirstFile
        (
          temp,
          &data
        );
 
        
        if ( h != INVALID_HANDLE_VALUE )
        {
                
                do 
                {
                        wprintf(L"%s%s\n", path, data.cFileName);
                }
                while ( n = FindNextFile(h, &data ) );
        }
        
 
        FindClose(h);
 
        if ( Recursive )
        {
                wcscpy(temp, path);
                wcscat(temp, L"*.*");
 
                h = FindFirstFile
                (
                        temp,
                        &data
                );
 
                if ( h != INVALID_HANDLE_VALUE )
                {
                        do 
                        {
                                if ( 
                                        data.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY 
                                        && wcscmp(data.cFileName, L".") != 0 
                                        && wcscmp(data.cFileName, L"..") != 0 
                                )
                                {
                                        wcscpy(nextpath, path);
                                        wcscat(nextpath, data.cFileName);
                                        show_files( nextpath, mask, 1 );
                                }
                        }
                        while ( n = FindNextFile(h, &data ) );
                }
 
        }
 
        FindClose(h);
}
 
int main(int argc, char ** argv)
{
        
        wchar_t path[MAX_SIZE], mask[MAX_SIZE];
        setlocale(LC_CTYPE, "");
 
        wprintf(L"Введите начальную директорию\n");
        fgetws(path, MAX_SIZE, stdin);
        path[ wcslen(path) - 1] = 0;
 
        wprintf(L"Введите маску для поиска\n");
        wscanf(L"%s", mask);
 
        show_files(path, mask, 1);
 
        puts("\nDone.");
        system("pause");
 
        return 0;
}
Не совсем рабочий вариант с бустом(не совсем рабочий, потому что у меня вылетает сегфолт в конструкторе directory_iterator если в него подавать определенную папку, попробую обновить boost, мб пройдет).

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
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
#include <sstream>
#include <algorithm>
#include <vector>
#include <stack>
 
#include <boost/filesystem.hpp>
#include <boost/regex.hpp>
 
namespace fs = boost::filesystem;
 
void show_files( fs::path path, boost::wregex pattern )
{
    fs::directory_iterator it(path);
    fs::directory_iterator end;
    
    while ( it != end )
    {
        if ( boost::regex_match( it->path().filename().generic_wstring(), pattern ) )
            std::wcout << it->path().generic_wstring() << std::endl;
            
        if ( fs::is_directory( *it ) && !fs::is_symlink(*it) )
            try
            {
                show_files( it->path() , pattern );
            }
            catch (...) { }
            
        try
        {
            ++it;
        }
        catch (...) 
        {
            return;
        }
        
    }
    
}
 
void trim( std::wstring& str )
{
    static const std::wstring delimeters = L" \t\n";
    
    while ( str.length() > 0 && delimeters.find(str[0]) != std::string::npos )
        str.erase( str.begin() );
        
    while ( str.length() > 0 && delimeters.find(str[ str.length() - 1 ]) != std::string::npos )
        str.erase( str.end() - 1 );
}
 
int main()
{
    std::locale::global( std::locale("") );
    
    std::wcout << L"Введите начальную директорию" << std::endl;
    std::wstring path;
    std::getline(std::wcin, path);
    
    std::wcout << L"Введите маску для поиска файлов" << std::endl;
    std::wstring mask;
    std::getline(std::wcin, mask);
    
    trim(path);
    trim(mask);
    
    show_files( fs::path(path), boost::wregex(mask) );
}

Не по теме:

Хм... Тут же вроде только что был свежий пост >_<''

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