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

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

23.02.2020, 13:04. Показов 12008. Ответов 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,549
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,549
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,549
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,549
13.06.2020, 20:35  [ТС]
Цитата Сообщение от GoshaM Посмотреть сообщение
CoWork co;
спасибо - обязательно оттестирую... когда допилю класс по тем же файлам из сети - точнее составлению линков для их подгрузки в текстовики
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
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
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 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,549
07.02.2021, 08:58  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
uml - орудие-поводок менеджеров курирующих кодеров, чтобы дать им ощущение что они держат их под контролем.
XLAT, manage your own project - тоже не помешает иногда... мне по схеме легче вспомнить, что я написала год назад, чем по коду распутывать клубок логической цепочки... всё-таки содержание в книге бывает полезно знать, чем листать весь 2х-томник... поняла, что удобно начинать с диграммы последовательности, а после написания зафиксить для себя на память устоявшейся диаграммой классов - что получилось (т.к. в процессе создания классы могут меняться - как кусок пластилина, пока лепишь)... может в перспективе когда-нибудь приду к более Pro варианту разработки - но пока так удобно...
спасибо вам за ответ!..
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
10.02.2021, 08:55  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
не создавать циклических связей/зависимостей в структуре Классов...
как-то так
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
16.02.2021, 08:26  [ТС]
уж очень замечательный torrent по UML - прямо по-новому смотришь на События и Автоматы и Состояния в Event-driven programming и с интересом листаются советы Рамбо по их моделированию
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
16.02.2021, 08:34  [ТС]
и, конечно, ориентация на use-case modelling - как реалии того, что "не всё то понадобится, что может найтись в сети или посоветуют с форума" ... всё-таки старинная мудрость "разработка под задачу!" даёт более подходящие решения, чем выстраивание сборной солянки из обрывков чужих кодов и классов...
Миниатюры
Считать текстовые файлы из папки  
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
16.02.2021, 08:45  [ТС]
или так (тоже стоит учитывать)
Миниатюры
Считать текстовые файлы из папки  
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
16.02.2021, 08:48  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
чем выстраивание сборной солянки из обрывков чужих кодов и классов...
или даже своих, но под др. задачу
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
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
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru