Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 17.03.2016
Сообщений: 15
1

Как сделать файлы с разными названиями при запуске программы?

21.08.2019, 23:38. Показов 1220. Ответов 4

Допустим у меня есть папка ../logs, она пустая.
При первом запуске программы и после ее завершения в этой папке создается файл log1.txt
При втором запуске программы и после так же ее успешного завершения создается файл log2.txt
При N-ном запуске программы и после ее успешного завершения создается файл logN.txt

Можно ли как то это реализовать с помощью ofstream Или не получится и необходимо использовать другой способ?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.08.2019, 23:38
Ответы с готовыми решениями:

Как сделать логотип при загрузке программы (типа как при запуске офиса)?
и так , люди...мне вдруг безумно захотелось узнать, как делать при загрузке программы такую фичу...

Как сделать, чтобы при запуске программы, пользователь выбирал как будет вводить значения
Как сделать, чтобы при запуске программы, пользователь выбирал как будет вводится значения....

Как сделать, чтобы в окне программы при запуске переменные стояли на разных строках?
как сделать что бы в окне программы(см. рисунок) при запуске,переменные (x1,y1,z1) и (x2,y2,z2)...

Файл: Как сделать так, чтобы при запуске программы проверялось, существует ли файл?
Как сделать так, чтобы при запуске программы проверялось, существует ли файл. Если да, то он...

4
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
21.08.2019, 23:45 2
Посчитать кол-во файлов в директории и создать новый с именем log*size + 1*
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <filesystem>
using namespace std;
 
std::size_t number_of_files_in_directory(std::filesystem::path path) {
    using std::filesystem::directory_iterator;
    return std::distance(directory_iterator(path), directory_iterator{});
}
 
int progEnd(int code) { std::cout << "\nEND\n"; system("pause>nul"); return code; }
 
int main() {
 
    cout << number_of_files_in_directory("D:\\Music\\Ringtones\\Beeps");
 
    return progEnd(0);
}
Если в катологе могут быть не только файлы с именем log*num*.*, но и др., то можно использовать не distance, а count_if с соответствующим компараратором
1
бах-бах и в продакшен!
3028 / 1632 / 572
Регистрация: 23.09.2014
Сообщений: 5,076
Записей в блоге: 4
22.08.2019, 01:36 3
Цитата Сообщение от Sava_Znatnov Посмотреть сообщение
Можно ли как то это реализовать с помощью ofstream
самый экономичный вариант: вместо номера лога использовать дату его создания.
1
6738 / 4537 / 1839
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
22.08.2019, 09:00 4
Цитата Сообщение от Sava_Znatnov Посмотреть сообщение
Можно ли как то это реализовать с помощью ofstream Или не получится и необходимо использовать другой способ?
В случае с std::ofstream - только проверять, что такого файла не существует
C++
1
2
3
4
5
6
7
8
9
10
        ofstream out;
        for (size_t i = 1; ; ++i)
        {
            std::filesystem::path file = std::string("C:\\Temp\\log") + std::to_string(i) + ".txt";
            if (!std::filesystem::exists(file))
            {
                out.open(file);
                break;
            }
        }
1
Эксперт C
26047 / 16241 / 3488
Регистрация: 24.12.2010
Сообщений: 35,585
22.08.2019, 10:30 5
Цитата Сообщение от Cortas Посмотреть сообщение
Посчитать кол-во файлов в директории и создать новый с именем log*size + 1*
Не самый лучший вариант, так как какие-то файлы могут оказаться удаленными.
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
только проверять, что такого файла не существует
Надежно, но накладно.
Я бы создал маленький файлик, куда записывается последний номер. С обязательно проверкой в духе поста 4
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2019, 10:30

Как открывать файлы по очереди в папке с разными названиями
Здравствуйте! Нужно написать программу, которая будет открывать по очереди каждый файл(файлы имеют...

Как создавать текстовые файлы с разными названиями для записи данных?
Пишу программу, студент вводит ФИО, группу и проходит тестирование, результаты теста записываются в...

Как мне сделать так, чтобы данный текстовый файл был открыт один раз при запуске программы и закрыт при закрытии программы?
Привет! Возник следующий вопрос. Программа состоит из основного окна Form1 и нескольких Unit. По...

Можно ли сделать так чтобы в for создавались массивы с разными названиями
Подскажите можно ли сделать так чтобы в форе(for) создавались массивы с разными названиями типа...


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

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

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