Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/56: Рейтинг темы: голосов - 56, средняя оценка - 4.63
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554

Считать текстовые файлы из папки

23.02.2020, 13:04. Показов 12347. Ответов 75
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
только начинаю знакомиться с языком...
вывела в консоль все пути так
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
#include <iostream>
#include <fstream>
#include <dirent.h>
#include <cstdio>
#include <string>
 
using namespace std;
 
int main(int argc, const char *argv[])
{
    DIR *dir;
    struct dirent *entry;
    
    const char *p = "E:\\NEW docs\\";
    int* szp= new int(strlen(p));
    std::cout << *szp << std::endl;
 
    if ((dir = opendir (p)) != NULL) {
      /* print all the files and directories within directory */
      while ((entry = readdir (dir)) != NULL) {
        char* n;
        n=entry->d_name;
 
        int* szn= new int ((strlen(n))+*szp+1);
        //std::cout << *szn << std::endl;
            
        char* slovo = new char[*szn];
        strcpy( slovo, p);
        strcat(slovo, n);
        std::cout << slovo << std::endl;
 
        delete[] &slovo;
        delete &szn;
      }
      closedir (dir);
    } else {
      perror ("");
      printf("error");
      return EXIT_FAILURE;
    }
       delete &szp;
       delete[] &p;
 
    return 0 ;
}
как-то длинно получилось...
а ещё и содержимое файлов хочется вывести в консоль... можно ли как-то короче?.. взять в вектор и пробежавшись по нему вывести содержимое в консоль?..
(и ? есть ли возможность быстро и асинхронно их считывать - т.к. потом планируется их запуск на обработку)

Добавлено через 6 минут
и кириллица не норм - как выводить норм рус.яз ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.02.2020, 13:04
Ответы с готовыми решениями:

Определить строки этого файла, содержащие максимальную по длине подстроку, состоящую из одинаковых символов
вот задание для программы: 6. Задан текстовый файл input.txt. Требуется определить строки этого файла, содержащие максимальную по длине...

Как считать все текстовые файлы с папки
Как считать все текстовые файлы с папки

Вывести все текстовые файлы из папки в выпадающий список
Здравствуйте ув. web разработчики. Столкнулся с проблемой:wall:. Есть папка Data\ в ней файлы *.txt как вывести все файлы txt в список...

75
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
08.04.2020, 20:39  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от GoshaM Посмотреть сообщение
Upp::AppendFileName
вот чувствовала я, что там есть слова, но искать не было времени... спасибо!
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.06.2020, 09:56
Цитата Сообщение от JeyCi Посмотреть сообщение
как-то длинно получилось...
а ещё и содержимое файлов хочется вывести в консоль... можно ли как-то короче?.. взять в вектор и пробежавшись по нему вывести содержимое в консоль?..
(и ? есть ли возможность быстро и асинхронно их считывать - т.к. потом планируется их запуск на обработку)
Вывести код в отдельный класс, а если для ускорения поручить обработку в пулу потоков.

https://github.com/Avazart/Ssh... ster/Dir.h
https://github.com/Avazart/Ssh... er/Dir.cpp
1
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
11.06.2020, 09:43  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
а если для ускорения поручить обработку в пулу потоков.
в Ultimate++ - можно через их родной CoDo - не смотрела ещё его реализацию - не уверена, что это пул потоков, но параллельное считывание - это точно
U++
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
CONSOLE_APP_MAIN
{
    FindFile ff("C:/myFolder/*.txt");
    Mutex lock;
    int total_lines = 0;
    CoDo([&] {
        int lines = 0;
        for(;;) {
            String path;
            {
                Mutex::Lock __(lock);
                while(ff && !ff.IsFile())
                    ff.Next();
                if(!ff) {
                    total_lines += lines;
                    return;
                }
                path = ff.GetPath();
                ff.Next();
                Cout() << "About to process " << path << "\n";  //file_name
            }
            FileIn in(path);
            while(!in.IsEof()) {
                in.GetLine();
                lines++;
            }
        }
    });
    
    Cout() << "Total number of lines is " << total_lines << "\n";
}

P.S.
BOOST threadpool cnfdbncz jnltkmyj jn ищщые
P.P.S.
можно и вектор futures, как пул потоков...
====
p.s.
Avazart, спасибо за ваш класс
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
11.06.2020, 19:53  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
cnfdbncz jnltkmyj jn ищщые
ставить отдельно от boost
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.06.2020, 21:53
Ну можно просто очередь с мютексом и обычные потоки типа std::thread которые будут из этой очереди брать файлы.
Тот же пул по сути.
0
415 / 150 / 48
Регистрация: 02.06.2016
Сообщений: 364
12.06.2020, 17:45
Лучший ответ Сообщение было отмечено JeyCi как решение

Решение

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
#include <Core/Core.h>
 
using namespace Upp;
 
void myGetFld ( String fld, Vector <String>& fn )
{
    for ( FindFile ff ( AppendFileName ( fld, "*.txt" ) ); ff; ff.Next() )
        fn.push_back ( fld + ff.GetName() );
}
 
void myReadFile ( String fn, String& txt )
{
    FileIn fin ( fn );
 
    if ( fin )
    {
        while ( !fin.IsEof() )
            txt << fin.GetLine() << "\n";
        
        fin.Close();
    }
}
 
CONSOLE_APP_MAIN
{
    Vector<String> fn;//Названия файлов
    Vector<String> txt;//Содержимое файлов
 
    myGetFld ( "E:/NEW docs/", fn );
    
    txt.SetCount ( fn.GetCount() );
 
    CoWork co;
 
    for ( int i = 0; i < fn.GetCount(); i++ )
        co & [i, &fn, &txt] { myReadFile ( fn[i], txt[i] );};
 
    co.Finish();
 
    for ( int i = 0; i < txt.GetCount(); i++ )
        DUMP ( txt[i] );
}
1
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
13.06.2020, 20:35  [ТС]
Цитата Сообщение от GoshaM Посмотреть сообщение
CoWork co;
спасибо - обязательно оттестирую... когда допилю класс по тем же файлам из сети - точнее составлению линков для их подгрузки в текстовики
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
06.02.2021, 22:28  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
напоминая об Архитектуре...
ИТОГО
Страуструп Б. Язык Программирования С++ - стр. 313
Идея заключается в постепенном переходе программиста с традиционного языка на С++: вначале он
программирует на С++ в традиционном процедурном стиле, затем с помощью методов абстракции
данных, и наконец, когда овладеет языком и связанными с ним средствами, полностью переходит на
объектно-ориентированное программирование.
...
Идея постепенного, пошагового овладения С++, а также возможность смешивать программы на С++ с
программами, написанными на языках, не имеющих средств абстракции данных и объектно-
ориентированного программирования, естественно приводит к проекту, имеющему гибридный стиль.
Большинство интерфейсов можно пока оставить на процедурном уровне, поскольку что-либо более
сложное не принесет немедленного выигрыша.

...
Простым примером введения более высокого семантического
уровня за счет перехода от уровня процедур плюс структур данных к уровню абстракции данных может
служить класс строк
...
Подобным образом можно включить в иерархию классов любой встроенный или отдельно
определенный тип.
- в принципе рабочий вариант!..
(чем сразу перекраивать свою логику с процедурного vba на ООП С++)

Добавлено через 8 минут
всё-таки когда понадобится полноценная интерактивность - точно на ООП придётся переходить полностью... ну и для уменьшения дублирования кода и для расширяемости... главное, не создавать циклических связей/зависимостей в структуре Классов...

Добавлено через 48 минут
поэтому начинать удобнее с UML - прежде всего Диаграмм последовательностей:
[Fauler_Martin.]_UML._Osnovue - c.81
Роджерсон - Основы COM - c.103
UML weekend crash course by Pender, Thomas A
(+ диаграммы классов и отношений)
удобный CASE-soft, правда, ещё поискать для построения UML-диаграмм? ... хотя в VS , говорят, есть (вроде в Enterprise edition) - не проверяла... а порисовать надо бы, а то как-то количество модулей и файлов разрастается, а всё перечитывать сил уже не хватает... всё-таки язык С/С++ не очень краткий... надо не только заканчивать с UML, но и начинать с неё и сложные case'ы прорисовывать на нём - глядишь, и не вспоминала бы сейчас, что там и где в моём коде...
(ну и диаграмму развёртывания, когда придётся...)
(и диаграмму состояний (конечного автомата e.g.) для event-driven programming)

Добавлено через 17 минут
Цитата Сообщение от JeyCi Посмотреть сообщение
CASE-soft
хоть такой - StarUML
хотя если знать, как рисовать, - то и Snagit подойдёт по-старинке - если уж совсем от руки...
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,241
Записей в блоге: 3
07.02.2021, 01:16
Цитата Сообщение от JeyCi Посмотреть сообщение
хотя если знать, как рисовать
рисовать надо кодом по экрану.

uml - орудие-поводок менеджеров курирующих кодеров, чтобы дать им ощущение что они держат их под контролем.


P.S.:
Цитата Сообщение от JeyCi Посмотреть сообщение
вывела в консоль все пути так
Цитата Сообщение от JeyCi Посмотреть сообщение
как-то длинно получилось...
C++
1
2
3
4
5
6
7
8
9
10
/// В консоль все пути.
/// C++17
#include <iostream>
#include <filesystem>
 
int main()
{   for(auto &file : std::filesystem::recursive_directory_iterator("./"))
    {   std::cout << file.path() << '\n';
    }
}
1
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
07.02.2021, 08:58  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
uml - орудие-поводок менеджеров курирующих кодеров, чтобы дать им ощущение что они держат их под контролем.
XLAT, manage your own project - тоже не помешает иногда... мне по схеме легче вспомнить, что я написала год назад, чем по коду распутывать клубок логической цепочки... всё-таки содержание в книге бывает полезно знать, чем листать весь 2х-томник... поняла, что удобно начинать с диграммы последовательности, а после написания зафиксить для себя на память устоявшейся диаграммой классов - что получилось (т.к. в процессе создания классы могут меняться - как кусок пластилина, пока лепишь)... может в перспективе когда-нибудь приду к более Pro варианту разработки - но пока так удобно...
спасибо вам за ответ!..
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
10.02.2021, 08:55  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
не создавать циклических связей/зависимостей в структуре Классов...
как-то так
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
16.02.2021, 08:26  [ТС]
уж очень замечательный torrent по UML - прямо по-новому смотришь на События и Автоматы и Состояния в Event-driven programming и с интересом листаются советы Рамбо по их моделированию
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
16.02.2021, 08:34  [ТС]
и, конечно, ориентация на use-case modelling - как реалии того, что "не всё то понадобится, что может найтись в сети или посоветуют с форума" ... всё-таки старинная мудрость "разработка под задачу!" даёт более подходящие решения, чем выстраивание сборной солянки из обрывков чужих кодов и классов...
Миниатюры
Считать текстовые файлы из папки  
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
16.02.2021, 08:45  [ТС]
или так (тоже стоит учитывать)
Миниатюры
Считать текстовые файлы из папки  
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
16.02.2021, 08:48  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
чем выстраивание сборной солянки из обрывков чужих кодов и классов...
или даже своих, но под др. задачу
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
28.02.2021, 07:28  [ТС]
Безопасное программирование на C и C++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.02.2021, 07:28

Не открываются папки, в которых лежат текстовые файлы (*.txt)
Доброго времени суток. Стоит Windows 10. Иногда после включения не открываются папки, в которых лежат текстовые файлы (*.txt) - Проводник...

Объединить текстовые файлы из папки и подпапки в один файл
Нужно считать папку и подпапки, парсить все текстовые файлы, которые в них находятся, и создать новый файл, который склеит все те файлы с...

Как объединить в один все текстовые файлы заданной папки?
Как объединить в один все текстовые файлы заданной папки. Кодировка у всех файлов - CP-1251, такая же кодировка необходима и выходному...

Текстовые файлы, как считать следующую строку посимвольно, оставаясь на нынешней
Вообщем такая проблема: вот кусок программы, где я читаю файл while not Eof(F) do Begin readln(F,l); k:=''; for i:=1 to...

Текстовые файлы. Считать данные одномерного массива, вычислить сумму элементов массива
написать программу которая учитывает данные одномерного массива из текстового файла, вычисляет сумму элементов массива, найденную сумму...


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

Или воспользуйтесь поиском по форуму:
76
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru