Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vitaliy2034
1 / 1 / 1
Регистрация: 14.01.2016
Сообщений: 40
Завершенные тесты: 2
#1

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

14.01.2016, 11:11. Просмотров 229. Ответов 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;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2016, 11:11     Как указать имя файла в fstream через string и функцию?
Посмотрите здесь:
Открытие файла через объекта класса fstream C++
C++ Не создает exe, как запустить через командную строку с указанием имя файла
C++ Как правильно передать объект fstream в функцию
C++ Как в Visual Studio задать имя файла при запуске Release через Ctrl + F5?
Куда происходит запись файла, если не указать полный путь до него, а только одно его имя? C++
fstream, string, random C++
Как задать путь для файла в fstream? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Apostol584
238 / 144 / 72
Регистрация: 26.11.2012
Сообщений: 371
Завершенные тесты: 2
14.01.2016, 12:26     Как указать имя файла в fstream через string и функцию? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
имя файла не должно содержать \/:*?<>|".
Это для чего?
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";
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,256
Завершенные тесты: 2
14.01.2016, 12:36     Как указать имя файла в fstream через string и функцию? #3
Цитата Сообщение от vitaliy2034 Посмотреть сообщение
ofstream outt (file_name.c_str());
Сделай debug вывод
C++
1
cout << file_name << endl;
Ну и не лишним будет проверять вообще открылся ли файл:
C++
1
2
3
if(!outt.is_open() ) {
// Не открылся файл
}
nord_v
227 / 176 / 69
Регистрация: 22.08.2013
Сообщений: 724
14.01.2016, 12:39     Как указать имя файла в fstream через string и функцию? #4
Цитата Сообщение от vitaliy2034 Посмотреть сообщение
string file_name = my_time_for_his() + "d.txt";//здесь в чёмто проблема но в чём
В отладчике посмотри, что в file_name получается.
Apostol584
238 / 144 / 72
Регистрация: 26.11.2012
Сообщений: 371
Завершенные тесты: 2
14.01.2016, 13:11     Как указать имя файла в fstream через string и функцию? #5
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;
}
GbaLog-
Любитель чаепитий
2619 / 1158 / 284
Регистрация: 24.08.2014
Сообщений: 4,220
Записей в блоге: 1
Завершенные тесты: 2
14.01.2016, 13:45     Как указать имя файла в fstream через string и функцию? #6
Если функция 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);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2016, 14:47     Как указать имя файла в fstream через string и функцию?
Еще ссылки по теме:
C++ Ввести с клавиатуры имя файла и передать его в функцию
C++ Как начать чтение файла сначала после Getline с первой строчки в fstream?
Как поэлементно считать текст с файла с помощью fstream, и сохранить каждый символ в массив? C++
C++ передача fstream в пользовательскую функцию
Ввод и вывод через fstream C++

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

Или воспользуйтесь поиском по форуму:
vitaliy2034
1 / 1 / 1
Регистрация: 14.01.2016
Сообщений: 40
Завершенные тесты: 2
14.01.2016, 14:47  [ТС]     Как указать имя файла в fstream через string и функцию? #7
Apostol584, спасибо за подказку с файлами.Выручил.
Yandex
Объявления
14.01.2016, 14:47     Как указать имя файла в fstream через string и функцию?
Ответ Создать тему
Опции темы

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