Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
 Аватар для vitaliy2034
6 / 7 / 4
Регистрация: 14.01.2016
Сообщений: 50

Как указать имя файла в fstream через string и функцию?

14.01.2016, 11:11. Показов 4249. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я написал програму которая переводит системы исчесления(2-36).Програма роботает на ура ,но я хотел сделать историю, а поскольку хотелось чтобы имя истории было равносильно текущему времени для этого я написал функцию my_time_for_his (я знаю можно было проще ,но на даный момент итересует пример с функцией) и файл истрии вопще не создаётся. НО компилятор молчит не говорит что есть ошибки.В чём проблема? Помогите!Вот код
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include<iostream>
#include<fstream>
#include<conio.h>
#include<string>
#include<time.h>
using namespace std;
string rax(long long digit,short d_sis );
string my_time_for_his();
string file_name = my_time_for_his() + "d.txt";//здесь в чёмто проблема но в чём
ofstream outt (file_name.c_str());
int main() {
    setlocale(LC_ALL, "Ukrainian");
    cout << file_name.c_str();
    short digit_s[34] = { 0 };
    system("color 2b");
    long long inp;
    outt << "\t\t\t\tПеревод в системи числення(2 - 36)";
    while (true)
    {
        cout << "\t\t\t\tПеревод в системи числення(2-36)\n\n\n\nВведiть число:\n";
        outt << "\n\n\n\nВведiть число:\n";
        for (;;) {
            if (!(cin >> inp)) {
                cout << "Спробуйте ще раз:\n";
                cin.clear();
                while (cin.get() != '\n');
            }
            else
            {
                outt << inp<<endl;
                break;
            }
        }
        for (short i = 2; i <= 36; i++)
        {
 
            outt << "Число " << inp << " в " << i << "-iй системi числення є: " << rax(inp, i) << endl;
            cout << "Число " << inp << " в " << i << "-iй системi числення є: " << rax(inp, i) << endl;
        }
 
        char choice2;
        cout << "Продовжити Так-у або Нi - n\n";
        if ((cin >> choice2) && choice2 == 'y')
        {
            system("cls");
        }
        else
        {
            cout << "Допобачення";
            _getch();
            exit(0);
        }
    }
    _getch();
    return 0;
}
string my_time_for_his(){
    string result;
    unsigned short Ar_date[3] = { 1970,1,1 };
    unsigned long long sekyndu = time(0);
    unsigned short A_time[2] = { 0,0 };
    const unsigned int w_const[3] = { 31536000,31622400,86400 };
    bool prov=false;
    while (true)
    {
        if (Ar_date[0]%4==0)
        {
            sekyndu -= w_const[1];
            Ar_date[0]++;
            if (sekyndu < w_const[1])
            {
                break;
            }
            continue;
        }
        if(Ar_date[0] % 4 != 0)
        {
            sekyndu -= w_const[0];
            Ar_date[0]++;
            if (sekyndu<w_const[0])
            {
                break;
            }
        }
    }
    if (Ar_date[0] % 4 == 0) 
        prov = true;
    unsigned short mount[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    if (prov == true)
        mount[1] = 29;
    for (short i = 0; i < 12; i++)
    {
        
        if (sekyndu >= mount[i] * w_const[2]) {
            sekyndu -= mount[i] * w_const[2];
            Ar_date[1]++;
        }
        else
        {
            while (sekyndu>=w_const[2])
            {
                sekyndu -= w_const[2];
                Ar_date[2]+=1;
            }
 
            break;
        }
    }
    while (sekyndu>=3600)
    {
        sekyndu -= 3600;
        A_time[0]++;
    }
    while (sekyndu>=60)
    {
        sekyndu -= 60;
        A_time[1]++;
    }
    
    result = to_string(Ar_date[2])+"_"+ to_string(Ar_date[1]) + "_"+to_string(Ar_date[0]) + "/"+ to_string(A_time[0]+=2) + ":"+to_string(A_time[1]) + ":"+ to_string(sekyndu) + "|";
    return result;
}
string rax(long long digit,short d_sis) {
    string result2;
    string temp;
    string all_d[37] = { "0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
    while (digit!=0)
    {
        temp += all_d[digit%d_sis];
        digit -= digit%d_sis;
        digit /= d_sis;
    }
    for (size_t i = 1; i <= temp.length(); i++)
    {
        result2 += temp[temp.length() - i];
    }
    return result2;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.01.2016, 11:11
Ответы с готовыми решениями:

ZedGraph. Как указать имя файла для SaveAsBitmap()?
Доброго времени суток бойцы , есть 2 вопроса под ZedGraph , в шпаргалке не нашел ... Не знаю поможет ли кто но вдруг( 1) Как при...

Как вызвать функцию, имя которой указано в переменной типа String?
гугл не помог(

Передать в fopen() переменную string, как имя файла
Доброго времени суток, задача такая: хочу создавать каждому зарегистрировавшемуся пользователю свой файл, с информацией о нём,...

6
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
14.01.2016, 12:26
Лучший ответ Сообщение было отмечено vitaliy2034 как решение

Решение

имя файла не должно содержать \/:*?<>|".
Это для чего?
C++
1
string all_d[37] = { "0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
Так по-моему лучше
C++
1
string all_d= "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
1
 Аватар для m1Rr0r
250 / 232 / 46
Регистрация: 05.02.2010
Сообщений: 3,288
14.01.2016, 12:36
Цитата Сообщение от vitaliy2034 Посмотреть сообщение
ofstream outt (file_name.c_str());
Сделай debug вывод
C++
1
cout << file_name << endl;
Ну и не лишним будет проверять вообще открылся ли файл:
C++
1
2
3
if(!outt.is_open() ) {
// Не открылся файл
}
1
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
14.01.2016, 12:39
Цитата Сообщение от vitaliy2034 Посмотреть сообщение
string file_name = my_time_for_his() + "d.txt";//здесь в чёмто проблема но в чём
В отладчике посмотри, что в file_name получается.
0
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
14.01.2016, 13:11
C++
1
2
3
4
5
6
7
8
9
10
string my_time_for_his(){
    time_t rawtime;
    struct tm * timeinfo;
    time(&rawtime);
    timeinfo = localtime(&rawtime);
    char* format = "%d_%m_%Y %H-%M-%S ";
    char buffer[80];
    strftime(buffer, 80, format, timeinfo);
    return buffer;
}
1
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
14.01.2016, 13:45
Если функция my_time_for_his просто возвращает текущее время, то вот так короче.
C++
1
2
3
4
5
6
7
#include <ctime>
...
string my_time_for_his() {
    time_t t;
    time(&t);
    return ctime(&t);
}
1
 Аватар для vitaliy2034
6 / 7 / 4
Регистрация: 14.01.2016
Сообщений: 50
14.01.2016, 14:47  [ТС]
Apostol584, спасибо за подказку с файлами.Выручил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.01.2016, 14:47
Помогаю со студенческими работами здесь

Чтение файла через fstream
прочитать из файла матрицу и записать в новый файл её минимальный элемент в первой строке задана размерность матрицы файл: 10 8 ...

Получить из файла все цифры, используя функцию fstream
Мужики помогите, препод задал написать прогу и чтобы она брала значения с текстового документа с помощью fstream. Не могу понять, как она...

Как передать в функцию имя файла
Пишу на VS. Не знаю, как передать в качестве параметра имя файла,в инете ничего не нашел. #include &lt;stdio.h&gt; #include...

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

Как после смены имени файла получить его новое имя в переменную типа string
string added = Console.ReadLine();//переменная для имени файлов формата added+number+extention string path =...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru