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

Рекурсией найти и вывести самое длинное имя файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Динамические структуры. Написать программу с функциями, которая подсчитывает количество слов списка Р http://www.cyberforum.ru/cpp-beginners/thread884032.html
Написать программу с функциями, которая подсчитывает количество слов списка Р, которые: а)начинаются и заканчиваются одной и той же буквой; б)начинаются с той же буквы, на которую заканчивается...
C++ Не поступают данные в поток (posix) #include <iostream> #include <sstream> #include <pthread.h> #include <vector> using namespace std; struct thread_data { int **a; int i; int n; http://www.cyberforum.ru/cpp-beginners/thread884031.html
C++ 3.1 Посмотрите, вроде быстрая сортировка, в любом случае, можете переделать(лучше под с++)?
#include <stdio.h> #include <conio.h> #include <clocale> #include <stdlib.h> #include <math.h> /* выделение памяти */ int *Allocate (int n) { int *a; a=(int *)calloc(n+1,sizeof(int *));
C++ Переписать код, используя конструкторы и деструкторы
Создать не менее двух конструкторов, в том числе - по умолчанию. 1.2. Создать конструктор копирования с динамическим выделением памяти, деструктор. 1.3. Добавить в программу инициализацию объектов...
C++ Сортировка слиянием http://www.cyberforum.ru/cpp-beginners/thread884021.html
Нужно реализовать метод двухпутевой сортировки слиянием,для этого я отсортировал два массива по возрастанию,помогите теперь с написанием ф-цию слияния этих массивов в третий(по возрастанию)
C++ Ошибки (запись файла и расчёты) TForm1::angular() { int x,y; int s = Speed->Text.ToInt(); int a = Angle->Text.ToInt(); int g= 9.81; int t=0; for (int i=0; ; i++) { подробнее

Показать сообщение отдельно
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
01.06.2013, 13:23
Допустил в первом своем коде некие ошибки, не учел рекурсивный поиск файлов в директориях. Вот новый вариант:
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
#include <iostream>
#include <vector>
#include <algorithm>
#include "boost/filesystem/operations.hpp"
#include "boost/filesystem/path.hpp"
#include <windows.h>
 
namespace fs = boost::filesystem;
 
void all_files(const fs::path& p, std::vector<fs::path>& files)
{
    for (fs::directory_iterator pos(p); pos != fs::directory_iterator(); ++pos)
    {
        if (fs::is_directory(*pos)) all_files(*pos, files);
        else
            files.push_back(*pos);
    }
}
 
int main()
{
    SetConsoleCP (1251); SetConsoleOutputCP (1251);
 
    fs::path directory_path("D://Temp");
    std::vector<fs::path> files;
    all_files(directory_path, files);
    for (const auto& file : files) std::cout << file << std::endl;
    
    fs::path longest_file = *std::max_element(files.begin(), files.end(),
            [](const fs::path& p1, const fs::path& p2){
                return p1.filename().generic_string().size() < 
                       p2.filename().generic_string().size();
            });
    std::cout<<"\n\nСамое длинное имя файла: "<<longest_file.filename();
    std::cout<<"\nПуть: "<<longest_file<<'\n';
            
    return 0;
}
11101010,не знаю можно ли проще без boost, но в чистом С++ я таких методов не знаю.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.